Excalibur.Dispatch.Serialization.MessagePack
10.0.0-alpha.16
See the version list below for details.
dotnet add package Excalibur.Dispatch.Serialization.MessagePack --version 10.0.0-alpha.16
NuGet\Install-Package Excalibur.Dispatch.Serialization.MessagePack -Version 10.0.0-alpha.16
<PackageReference Include="Excalibur.Dispatch.Serialization.MessagePack" Version="10.0.0-alpha.16" />
<PackageVersion Include="Excalibur.Dispatch.Serialization.MessagePack" Version="10.0.0-alpha.16" />
<PackageReference Include="Excalibur.Dispatch.Serialization.MessagePack" />
paket add Excalibur.Dispatch.Serialization.MessagePack --version 10.0.0-alpha.16
#r "nuget: Excalibur.Dispatch.Serialization.MessagePack, 10.0.0-alpha.16"
#:package Excalibur.Dispatch.Serialization.MessagePack@10.0.0-alpha.16
#addin nuget:?package=Excalibur.Dispatch.Serialization.MessagePack&version=10.0.0-alpha.16&prerelease
#tool nuget:?package=Excalibur.Dispatch.Serialization.MessagePack&version=10.0.0-alpha.16&prerelease
Excalibur.Dispatch.Serialization.MessagePack
Opt-in MessagePack serialization support for Excalibur framework.
Purpose
Provides high-performance MessagePack binary serialization for:
- Ultra-low latency scenarios
- Bandwidth-constrained environments
- Cross-language interoperability (C++, Python, Rust, etc.)
Usage
Registration (Single Call)
One call does everything -- DI registration, serializer registry entry, and setting MessagePack as the current serializer:
services.AddMessagePackSerializer();
With Custom Options
Pass native MessagePackSerializerOptions for custom configuration:
services.AddMessagePackSerializer(
MessagePackSerializerOptions.Standard
.WithSecurity(MessagePackSecurity.UntrustedData)
.WithCompression(MessagePackCompression.Lz4BlockArray));
Package Dependencies
MessagePack3.1.9 - MessagePack binary serialization runtimeExcalibur.Dispatch.AbstractionsandExcalibur.Dispatch- Framework contracts and integration
Untrusted Input
The no-options registration uses MessagePackSecurity.UntrustedData. When supplying
custom options, select the security profile explicitly, as in the example above.
The 3.1.9 dependency includes the upstream fix for nested arrays reusing unread bytes
to justify excessive allocation (GHSA-qhrr-8q5h-9q3h).
Depth and message-size limits remain useful, but are not substitutes for the patched runtime.
AOT Compatibility
Not validated under Native AOT. MessagePack-CSharp resolves formatters through runtime code
generation (StandardResolver), so this package does not declare ahead-of-time compatibility.
Performance Characteristics
- Compression: Built-in LZ4 support for bandwidth optimization
- Measurements: Throughput and latency depend on payload, resolver and options. The framework benchmark refresh is in progress; current matched measurements are required before publishing a JSON comparison or latency guarantee.
Architecture Compliance
This package follows the Dispatch serialization policy:
- Core (
Excalibur.Dispatch) - System.Text.Json (default) - Public Edges (
Excalibur.Dispatch.Hosting.Web, etc.) - System.Text.Json with source-gen - Opt-In Alternatives (
Excalibur.Dispatch.Serialization.*) - Pay-for-play binary serializers
MessagePack is not included in Excalibur.Dispatch to avoid transitive bloat. Consumers must explicitly opt-in by:
- Adding
<PackageReference Include="Excalibur.Dispatch.Serialization.MessagePack" /> - Calling
services.AddMessagePackSerializer()
When to Use
Use MessagePack when:
- You need maximum throughput and minimum latency
- You're sending binary data across services
- You need cross-language serialization (non-.NET clients)
- You want bandwidth-efficient wire formats
Use System.Text.Json when:
- You need human-readable message formats
- You're exposing HTTP APIs to external consumers
- You require JSON Schema or OpenAPI compatibility
Use MemoryPack when:
- You're building internal .NET-to-.NET communication
- You want a .NET-focused binary serializer
- You control both producer and consumer code
Pluggable Serialization Integration
MessagePack is assigned Serializer ID 3 in the pluggable serialization system.
The magic byte 0x03 prefixes all MessagePack-serialized payloads.
Migration Support: When switching from another serializer (e.g., MemoryPack):
- Call
services.AddMessagePackSerializer()-- old data remains readable via magic byte - New messages use MessagePack
- No data migration needed for backward compatibility
See Also
- Excalibur.Dispatch.Serialization.Protobuf - Protocol Buffers opt-in package
- MessagePack Specification
License
This project is multi-licensed under:
See LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- CloudNative.CloudEvents (>= 2.8.0)
- CloudNative.CloudEvents.SystemTextJson (>= 2.8.0)
- Cronos (>= 0.12.0)
- Excalibur.Dispatch (>= 10.0.0-alpha.16)
- Excalibur.Dispatch.Abstractions (>= 10.0.0-alpha.16)
- Medo.Uuid7 (>= 3.2.0)
- MessagePack (>= 3.1.9)
- Microsoft.Extensions.Configuration (>= 10.0.10)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.10)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Http (>= 10.0.10)
- Microsoft.Extensions.Logging (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- Microsoft.Extensions.ObjectPool (>= 10.0.10)
- Microsoft.Extensions.Options (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.10)
- System.Threading.RateLimiting (>= 10.0.7)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 10.0.0-alpha.19 | 0 | 10/27/2026 |
| 10.0.0-alpha.18 | 40 | 10/25/2026 |
| 10.0.0-alpha.17 | 45 | 10/23/2026 |
| 10.0.0-alpha.16 | 54 | 10/21/2026 |
| 10.0.0-alpha.15 | 56 | 10/11/2026 |
| 10.0.0-alpha.14 | 63 | 10/2/2026 |
| 10.0.0-alpha.13 | 65 | 9/29/2026 |
| 10.0.0-alpha.12 | 67 | 9/25/2026 |
| 10.0.0-alpha.11 | 72 | 9/15/2026 |
| 10.0.0-alpha.10 | 81 | 9/6/2026 |
| 10.0.0-alpha.9 | 78 | 8/31/2026 |
| 10.0.0-alpha.8 | 85 | 8/14/2026 |
| 10.0.0-alpha.7 | 88 | 8/13/2026 |
| 10.0.0-alpha.6 | 90 | 8/11/2026 |
| 10.0.0-alpha.5 | 75 | 8/10/2026 |
| 10.0.0-alpha.4 | 74 | 8/10/2026 |
| 3.0.0-alpha.216 | 99 | 6/30/2026 |
| 3.0.0-alpha.215 | 95 | 6/23/2026 |
| 3.0.0-alpha.214 | 107 | 6/23/2026 |
| 3.0.0-alpha.208 | 90 | 6/11/2026 |
Release notes and versioning policy: https://docs.excalibur-dispatch.dev/docs/migration/version-upgrades