Asp.net core 如何在Asp.net核心Web API中为messagepack内容类型启用LZ4压缩
我正在尝试在我正在处理的.net核心Web API项目上启用MessagePack内容类型 经过一些研究,安装了这个软件包,并在启动文件中添加了以下代码。很简单!现在我可以通过我的API看到msgpack内容Asp.net core 如何在Asp.net核心Web API中为messagepack内容类型启用LZ4压缩,asp.net-core,asp.net-core-webapi,msgpack,lz4,Asp.net Core,Asp.net Core Webapi,Msgpack,Lz4,我正在尝试在我正在处理的.net核心Web API项目上启用MessagePack内容类型 经过一些研究,安装了这个软件包,并在启动文件中添加了以下代码。很简单!现在我可以通过我的API看到msgpack内容 services.AddMvc().AddMessagePackFormatters(c=> { c、 FormatterResolver=ContractlessStandardResolver.Instance; c、 SupportedContentTypes.Add(“应用程序/x
services.AddMvc().AddMessagePackFormatters(c=>
{
c、 FormatterResolver=ContractlessStandardResolver.Instance;
c、 SupportedContentTypes.Add(“应用程序/x-msgpack”);
c、 支持扩展。添加(“mp”);
});
现在,我想在上面应用LZ4压缩,以减少中提到的有效负载大小。我找不到任何nuget软件包来添加此功能,也找不到插件LZ4压缩的方法。在一些博客中,我读到MessagePack内置了LZ4压缩。我不明白这意味着什么,关于这方面的文档也很少
我是这方面的新手,所以非常感谢您的帮助
谢谢您必须编写一个自定义媒体类型格式化程序,因为压缩在不同的模块中使用。您必须使用
LZ4MessagePackSerializer
而不是MessagePackSerializer
。用法是一样的。此外,建议的MIME类型是应用程序/msgpack
请参见以下基本示例:
公共类MsgPackMediaTypeFormatter:BufferedMediaTypeFormatter
{
公共MsgPackMediaTypeFormatter()
{
添加(新的MediaTypeHeaderValue(“应用程序/msgpack”);
}
公共覆盖布尔CanReadType(类型)
{
return!type.isastract&!type.IsInterface&&type.IsPublic;
}
公共重写bool CanWriteType(类型)
{
return!type.isastract&!type.IsInterface&&type.IsPublic;
}
公共重写对象ReadFromStream(类型类型、流readStream、HttpContent内容、IFormatterLogger formatterLogger)
{
返回LZ4MessagePackSerializer.NonGeneric.Deserialize(类型,readStream);
}
public override void WriteToStream(类型类型、对象值、流writeStream、HttpContent)
{
LZ4MessagePackSerializer.NonGeneric.Serialize(类型、writeStream、值、MessagePack.Resolver.ContractlessStandardResolver.Instance);
}
}
我就是这么做的!!谢谢你的回答。