网站首页 网站源码
using MessagePack;
#nullable enable
namespace Dpz.Core.WebApi.MessagePackFormatters;
/// <summary>
/// MessagePack 格式化选项
/// </summary>
public class MessagePackFormatterOptions
{
/// <summary>
/// 内容协商时使用的默认Content-Type
/// </summary>
public const string DefaultContentType = "application/x-msgpack";
/// <summary>
/// 默认文件扩展名
/// </summary>
public const string DefaultFileExtension = "msgpack";
/// <summary>
/// 关联类型 (默认 <see cref="DefaultContentType" />).
/// </summary>
public HashSet<string> MediaTypes { get; } = [DefaultContentType];
/// <summary>
/// 关联的格式映射 (默认 <see cref="DefaultFileExtension" />) (不区分大小写).
/// <seealso cref="MvcOptions.FormatterMappings" />
/// </summary>
/// <remarks>
/// 详细信息参考
/// https://learn.microsoft.com/en-us/aspnet/core/web-api/advanced/formatting
/// </remarks>
public HashSet<string> FileExtensions { get; } =
new HashSet<string>(StringComparer.OrdinalIgnoreCase) { DefaultFileExtension };
/// <summary>
/// 格式化器解析器
/// </summary>
public IFormatterResolver? FormatterResolver { get; set; }
/// <summary>
/// 应用于序列化序列的压缩方案,参见 <see cref="MessagePackSerializerOptions.Compression" />.
/// </summary>
public MessagePackCompression Compression { get; set; }
/// <summary>
/// 使用旧规范进行序列化
/// 详情查看 <see cref="MessagePackSerializerOptions.OldSpec" />
/// </summary>
/// <remarks>
/// 读取时始终支持新旧规范
/// </remarks>
public bool? UseOldSpecification { get; set; }
/// <summary>
/// 指示在使用无类型格式化器时,是否应省略程序集版本、文化和公钥标记元数据,默认值为 <c>false</c>
/// 详细信息参考 <see cref="MessagePackSerializerOptions.OmitAssemblyVersion" />
/// </summary>
public bool OmitAssemblyVersion { get; set; }
/// <summary>
/// 允许反序列化器在找不到匹配版本时实例化来自不同版本程序集的类型,默认值为 <c>false</c>.
/// 详细信息参考 <see cref="MessagePackSerializerOptions.AllowAssemblyVersionMismatch" />
/// </summary>
public bool AllowAssemblyVersionMismatch { get; set; }
}
上述代码定义了一个名为 MessagePackFormatterOptions
的类,主要用于配置 MessagePack 格式化器的选项。MessagePack 是一种高效的二进制序列化格式,常用于网络通信和数据存储。以下是该类中各个成员的详细解释:
常量字段
DefaultContentType
: 定义了在内容协商时使用的默认 Content-Type,值为 "application/x-msgpack"
。DefaultFileExtension
: 定义了默认的文件扩展名,值为 "msgpack"
。属性
MediaTypes
: 一个 HashSet<string>
,用于存储与 MessagePack 格式相关的媒体类型。默认情况下,它包含 DefaultContentType
。FileExtensions
: 一个 HashSet<string>
,用于存储与 MessagePack 格式相关的文件扩展名,默认情况下包含 DefaultFileExtension
。该集合不区分大小写。FormatterResolver
: 一个可选的 IFormatterResolver
,用于解析格式化器。可以自定义序列化和反序列化的行为。Compression
: 一个 MessagePackCompression
枚举值,指定在序列化序列时使用的压缩方案。UseOldSpecification
: 一个可空的布尔值,指示是否使用旧的 MessagePack 规范进行序列化。读取时始终支持新旧规范。OmitAssemblyVersion
: 一个布尔值,指示在使用无类型格式化器时,是否应省略程序集版本、文化和公钥标记元数据,默认值为 false
。AllowAssemblyVersionMismatch
: 一个布尔值,指示是否允许反序列化器在找不到匹配版本时实例化来自不同版本程序集的类型,默认值为 false
。MessagePackFormatterOptions
类的主要功能是提供一个灵活的配置选项集合,以便在使用 MessagePack 进行数据序列化和反序列化时,能够根据具体需求进行调整。通过这些选项,开发人员可以控制数据的格式、压缩方式、版本兼容性等,从而实现更高效和灵活的数据处理。
在 ASP.NET Core Web API 或其他需要高效数据传输的应用程序中,开发人员可以使用这个类来配置 MessagePack 格式化器,以便在客户端和服务器之间高效地传输数据。通过调整这些选项,可以满足不同的业务需求和性能要求。