SuperAPI AI 工具集

dotnet-serialization

数据与分析

查看项目

更新于 10-16 07:23

技能介绍

用途:为 .NET 应用提供 AOT 友好的序列化模式,覆盖 System.Text.Json 源生成器(编译期序列化)、Protocol Buffers 二进制序列化与 MessagePack 高性能紧凑格式,并给出序列化器选型与性能权衡建议。

主要能力:比较 JSON(STJ 源生成)、Protobuf、MessagePack 与 Newtonsoft.Json 在 AOT 安全性、可读性、体积与速度上的差异;演示 JsonSerializerContext 与 [JsonSerializable] 的用法、多上下文合并、常见配置与多态处理;给出 Protobuf 的包引用、.proto 定义与独立序列化用法;给出 MessagePack 的 [MessagePackObject]、序列化、LZ4 压缩与 AOT resolver 设置;列出从 Newtonsoft.Json 迁移的步骤与常见陷阱。

使用方式:定义 partial JsonSerializerContext 并标注 [JsonSerializable];序列化时传入 AppJsonContext.Default.Order 等 TypeInfo;ASP.NET Core 中 Minimal API 用 ConfigureHttpJsonOptions、MVC 用 AddJsonOptions 注册上下文;Protobuf 通过 <Protobuf Include="Protos*.proto" GrpcServices="Both" /> 注册;MessagePack 通过 MessagePackSerializer.DefaultOptions 注册生成的 resolver。

适用场景:API、配置与 Web 客户端(JSON);服务间通信与 gRPC(Protobuf);高吞吐缓存与实时消息(MessagePack)。

限制:反射式序列化(Newtonsoft.Json、无上下文的 STJ)在 Native AOT 与裁剪下会失败;[JsonSerializable] 不自动覆盖集合类型,需单独列出;Newtonsoft 的 [JsonProperty] 与 STJ 不兼容;MessagePack 同一类型层级不要混用整数与字符串 [Key];<Protobuf> 项需指定 GrpcServices。源生成器编写、HTTP 客户端、Native AOT 架构与裁剪等主题不在本技能范围内。