BareWire.Serialization.MsgPack
2.0.4
dotnet add package BareWire.Serialization.MsgPack --version 2.0.4
NuGet\Install-Package BareWire.Serialization.MsgPack -Version 2.0.4
<PackageReference Include="BareWire.Serialization.MsgPack" Version="2.0.4" />
<PackageVersion Include="BareWire.Serialization.MsgPack" Version="2.0.4" />
<PackageReference Include="BareWire.Serialization.MsgPack" />
paket add BareWire.Serialization.MsgPack --version 2.0.4
#r "nuget: BareWire.Serialization.MsgPack, 2.0.4"
#:package BareWire.Serialization.MsgPack@2.0.4
#addin nuget:?package=BareWire.Serialization.MsgPack&version=2.0.4
#tool nuget:?package=BareWire.Serialization.MsgPack&version=2.0.4
BareWire.Serialization.MsgPack
Zero-copy MessagePack serializer and deserializer for BareWire. Backed by MessagePack-CSharp with the ContractlessStandardResolver and an UntrustedData security profile.
Installation
dotnet add package BareWire.Serialization.MsgPack
Usage
Serializer only (publish path)
// Registers IMessageSerializer + IMessageDeserializer + concrete MessagePackDeserializer
services.AddBareWireMessagePackSerializer();
With Content-Type routing (consume path)
To route inbound messages whose Content-Type is application/x-msgpack to the MessagePack
deserializer, register the routing decorator after the base JSON deserializer resolver:
// 1. Register the base IDeserializerResolver (raw-JSON, ADR-001)
services.AddBareWireJsonSerializer();
// 2. Optionally register the MsgPack serializer for the publish path
services.AddBareWireMessagePackSerializer();
// 3. Activate Content-Type routing — decorates the existing IDeserializerResolver
services.AddBareWireMessagePackDeserializerRouting();
Registration order matters.
AddBareWireMessagePackDeserializerRouting()must be called afterAddBareWireJsonSerializer()(or any other method that registers anIDeserializerResolver). Calling it first throwsInvalidOperationException.
Per-endpoint override
To force all messages on a specific endpoint to use MessagePack regardless of Content-Type:
wire.ReceiveEndpoint("my-queue", ep =>
{
ep.UseDeserializer<MessagePackDeserializer>();
ep.Consumer<MyConsumer, MyMessage>();
});
This requires AddBareWireMessagePackSerializer() to be registered (the concrete type must be
resolvable from DI).
Features
- Zero-copy serialization via
IBufferWriter<byte>(ADR-003) - Zero-copy deserialization via
ReadOnlySequence<byte>including multi-segment sequences - Content-Type routing:
application/x-msgpack→MessagePackDeserializer(fail-closed exact-match — parameterised variants such asapplication/x-msgpack; charset=utf-8fall through to raw-JSON) UntrustedDatasecurity profile: SipHash seed, recursion-depth limit, no Typeless/LZ4 (ADR-013)- Raw-first default preserved: unregistered or
nullContent-Type falls back to raw-JSON (ADR-001) - Idempotent registration: calling
AddBareWireMessagePackDeserializerRouting()multiple times is safe
Note: Message types used with MessagePack must be
public. TheContractlessStandardResolvergenerates formatters only forpublictypes at runtime.
Documentation
Full documentation: barewire.wizardsoftware.pl
License
MIT
| 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
- BareWire.Abstractions (>= 2.0.4)
- MessagePack (>= 2.5.301)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on BareWire.Serialization.MsgPack:
| Package | Downloads |
|---|---|
|
BareWire.Benchmarks
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.