6.5添加 MessagePack 支持
创建于 2026 年 8 月 17 日约 2 分钟读完
MessagePack 是一种紧凑、高效的二进制序列化格式,专为多种语言间的数据交换设计。相较于 JSON,MessagePack 提供了更高的性能和更小的数据体积。尽管是二进制格式,MessagePack 在设计时便充分考虑了跨语言使用的便捷性,目前已被广泛应用于 Python、Ruby、JavaScript、C++ 以及 C# 等多种编程语言中。
要在项目中启用 MessagePack 支持,请按照以下步骤操作:
- 安装
MessagePack包:
dotnet add package MessagePack- 添加
MessagePackContentProcessor内容处理器:
public class MessagePackContentProcessor : HttpContentProcessorBase{ /// <inheritdoc /> public override bool CanProcess(HttpContentProcessorContext context) => context.ContentType == "application/msgpack"; /// <inheritdoc /> public override HttpContent? Process(HttpContentProcessorContext context) { // 尝试解析 HttpContent 类型 if (TryProcess(context, out var httpContent)) { return httpContent; } // 将原始请求内容转换为字节数组 var content = context.RawContent as byte[] ?? MessagePackSerializer.Serialize(context.RawContent); // 初始化 ByteArrayContent 实例 var byteArrayContent = new ByteArrayContent(content); byteArrayContent.Headers.ContentType = new MediaTypeHeaderValue(context.ContentType) { CharSet = context.Encoding?.WebName }; return byteArrayContent; }}- 应用
MessagePackContentProcessor内容处理器:
- 单次请求设置:
HttpRequestBuilder.Post("https://furion.net/") .AddHttpContentProcessors(() => [ new MessagePackContentProcessor() ]) .SetContent(new MessagePackModel { Id = 1, Name = "Furion" }, "application/msgpack");- 全局配置:
在 Startup.cs 或 Program.cs 文件中,配置并注册 HttpRemote 服务,以启用 MessagePackContentProcessor 内容处理器功能:
services.AddHttpRemote(builder =>{ builder.AddHttpContentProcessors(() => [ new MessagePackContentProcessor() ]);});这样可以在项目中通过 HTTP 远程请求发送 application/msgpack 格式的数据。