6.5添加 MessagePack 支持

创建于 2026 年 8 月 17 日约 2 分钟读完

MessagePack 是一种紧凑、高效的二进制序列化格式,专为多种语言间的数据交换设计。相较于 JSONMessagePack 提供了更高的性能和更小的数据体积。尽管是二进制格式,MessagePack 在设计时便充分考虑了跨语言使用的便捷性,目前已被广泛应用于 PythonRubyJavaScriptC++ 以及 C# 等多种编程语言中。

要在项目中启用 MessagePack 支持,请按照以下步骤操作:

  1. 安装 MessagePack
bash
dotnet add package MessagePack
  1. 添加 MessagePackContentProcessor 内容处理器
cs
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;    }}
  1. 应用 MessagePackContentProcessor 内容处理器
  • 单次请求设置
cs
HttpRequestBuilder.Post("https://furion.net/")    .AddHttpContentProcessors(() => [ new MessagePackContentProcessor() ])    .SetContent(new MessagePackModel { Id = 1, Name = "Furion" }, "application/msgpack");
  • 全局配置

Startup.csProgram.cs 文件中,配置并注册 HttpRemote 服务,以启用 MessagePackContentProcessor 内容处理器功能:

cs
services.AddHttpRemote(builder =>{    builder.AddHttpContentProcessors(() => [ new MessagePackContentProcessor() ]);});

这样可以在项目中通过 HTTP 远程请求发送 application/msgpack 格式的数据。