Excalibur.Dispatch.Serialization.MessagePack
3.0.0-alpha.159
See the version list below for details.
dotnet add package Excalibur.Dispatch.Serialization.MessagePack --version 3.0.0-alpha.159
NuGet\Install-Package Excalibur.Dispatch.Serialization.MessagePack -Version 3.0.0-alpha.159
<PackageReference Include="Excalibur.Dispatch.Serialization.MessagePack" Version="3.0.0-alpha.159" />
<PackageVersion Include="Excalibur.Dispatch.Serialization.MessagePack" Version="3.0.0-alpha.159" />
<PackageReference Include="Excalibur.Dispatch.Serialization.MessagePack" />
paket add Excalibur.Dispatch.Serialization.MessagePack --version 3.0.0-alpha.159
#r "nuget: Excalibur.Dispatch.Serialization.MessagePack, 3.0.0-alpha.159"
#:package Excalibur.Dispatch.Serialization.MessagePack@3.0.0-alpha.159
#addin nuget:?package=Excalibur.Dispatch.Serialization.MessagePack&version=3.0.0-alpha.159&prerelease
#tool nuget:?package=Excalibur.Dispatch.Serialization.MessagePack&version=3.0.0-alpha.159&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
.WithCompression(MessagePackCompression.Lz4BlockArray));
Package Dependencies
MessagePack- MessagePack binary serialization runtimeExcalibur.Dispatch.Abstractions- Core contracts only (no Core dependency)
AOT Compatibility
Native AOT compatible with source-generated formatters and resolvers.
Performance Characteristics
- Throughput: ~2-5x faster than JSON for binary payloads
- Compression: Built-in LZ4 support for bandwidth optimization
- Latency: Sub-microsecond serialization for small messages
Architecture Compliance
This package follows the Dispatch serialization policy (R0.14):
- Core (
Excalibur.Dispatch) - System.Text.Json (default, ADR-295) - 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 need the absolute fastest .NET binary serialization
- 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
| 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 (>= 3.0.0-alpha.159)
- Excalibur.Dispatch.Abstractions (>= 3.0.0-alpha.159)
- Medo.Uuid7 (>= 3.2.0)
- MessagePack (>= 3.1.4)
- Microsoft.AspNetCore.Authorization (>= 10.0.6)
- Microsoft.Extensions.Configuration (>= 10.0.6)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.6)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.6)
- Microsoft.Extensions.DependencyInjection (>= 10.0.6)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.6)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.6)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions (>= 10.0.6)
- Microsoft.Extensions.Hosting.Abstractions (>= 10.0.6)
- Microsoft.Extensions.Http (>= 10.0.6)
- Microsoft.Extensions.Logging (>= 10.0.6)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.6)
- Microsoft.Extensions.ObjectPool (>= 10.0.6)
- Microsoft.Extensions.Options (>= 10.0.6)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.6)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.6)
- System.Threading.RateLimiting (>= 10.0.6)
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 |
|---|---|---|
| 3.0.0-alpha.177 | 0 | 4/25/2026 |
| 3.0.0-alpha.176 | 0 | 4/25/2026 |
| 3.0.0-alpha.175 | 21 | 4/24/2026 |
| 3.0.0-alpha.174 | 37 | 4/24/2026 |
| 3.0.0-alpha.173 | 26 | 4/24/2026 |
| 3.0.0-alpha.170 | 32 | 4/23/2026 |
| 3.0.0-alpha.168 | 37 | 4/23/2026 |
| 3.0.0-alpha.165 | 38 | 4/22/2026 |
| 3.0.0-alpha.164 | 32 | 4/22/2026 |
| 3.0.0-alpha.163 | 35 | 4/22/2026 |
| 3.0.0-alpha.162 | 32 | 4/22/2026 |
| 3.0.0-alpha.161 | 35 | 4/21/2026 |
| 3.0.0-alpha.160 | 32 | 4/21/2026 |
| 3.0.0-alpha.159 | 34 | 4/21/2026 |
| 3.0.0-alpha.158 | 41 | 4/21/2026 |
| 3.0.0-alpha.157 | 44 | 4/20/2026 |
| 3.0.0-alpha.156 | 45 | 4/17/2026 |
| 3.0.0-alpha.155 | 40 | 4/17/2026 |
| 3.0.0-alpha.143 | 46 | 4/14/2026 |
| 3.0.0-alpha.138 | 41 | 4/13/2026 |