C# 高并发下用 JsonSerializerContext 提升性能
JsonSerializerContext通过预编译序列化逻辑、避免反射与锁竞争、实现线程安全零分配来提升高并发性能;需继承基类、用[JsonSerializable]标记类型、启用源生成,并复用静态实例配合泛型API调用。
JsonSerializerContext通过预编译序列化逻辑、避免反射与锁竞争、实现线程安全零分配来提升高并发性能;需继承基类、用[JsonSerializable]标记类型、启用源生成,并复用静态实例配合泛型API调用。

为什么 JsonSerializerContext 能在高并发下提升性能
因为 JsonSerializerContext 预编译了类型序列化逻辑,避免每次调用 JsonSerializer.Serialize 时重复反射、生成委托、构建缓存键。在高并发场景下,反复创建 JsonSerializerOptions 或依赖默认上下文会触发锁竞争和 GC 压力,而静态复用的 JsonSerializerContext 子类是线程安全且零分配(对已知类型)。
如何正确定义和使用 JsonSerializerContext 子类
必须继承抽象基类 JsonSerializerContext,用 [JsonSerializable] 标记要支持的类型,并启用源生成(Source Generator)。不能手动 new 它,也不能把它当普通类随意实例化。
- 项目需启用源生成:在
.csproj中添加(.NET 7+ 推荐),或显式引用true System.Text.Json.SourceGeneration包 JsonSerializerContext子类必须是public sealed,且构造函数为internal或protected- 每个上下文应聚焦一组相关类型,避免把几十个 DTO 全塞进一个上下文——类型过多会导致生成代码膨胀、编译变慢、热重载失败
public static partial class MyJsonContext : JsonSerializerContext
{
[JsonSerializable(typeof(Order))]
[JsonSerializable(typeof(List))]
[JsonSerializable(typeof(Dictionary))]
public static partial JsonTypeInfo Order { get; }
public static partial JsonTypeInfo> OrderList { get; }
}
高并发中怎么传参、怎么选 API
核心原则:复用同一个 JsonSerializerContext 实例,且优先使用泛型重载,避免运行时类型擦除带来的装箱或反射回退。
- 序列化时用
JsonSerializer.Serialize(output, value, context.Order),而不是JsonSerializer.Serialize(output, value, options)—— 后者绕过源生成,退化为传统路径 - 反序列化必须指定具体
JsonTypeInfo,例如JsonSerializer.Deserialize;若只传(input, MyJsonContext.Order) context不传JsonTypeInfo,会触发内部查找逻辑,失去性能优势 - 不要在请求处理中 new 上下文实例:所有
JsonSerializerContext子类都应通过静态属性暴露,如MyJsonContext.Default或直接用生成的static partial属性
容易被忽略的坑和兼容性限制
源生成不是万能的,很多动态场景它不支持,强行用反而引发运行时异常或静默退化。
- 不支持运行时才确定的泛型参数(如
T来自方法参数且未在[JsonSerializable]中声明) - 不支持
object、dynamic、ExpandoObject等无固定结构类型——它们仍走反射路径,且无法被JsonSerializerContext捕获 - .NET 6 的源生成是实验性功能,.NET 7+ 才稳定;若项目混用旧版 SDK 或 CI 环境未升级,可能生成失败但不报错,导致上线后性能骤降
- 调试时注意:生成的代码在
obj/Debug/...下,若清理不彻底,可能引用旧版JsonTypeInfo导致序列化结果不一致
最常出问题的是「以为加了 [JsonSerializable] 就万事大吉」,实际没检查生成是否成功、没验证泛型绑定是否精确、也没压测对比分配率——这些地方一漏,高并发下的性能收益就归零。
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Ableton Live 是面向音乐制作人与现场表演者的数字音频工作站,提供编曲视图、独具特色的现场视图、音频录制、MIDI创作、实时变速、乐器及效果器。Mac版原生支持Apple芯片,并可连接音频接口、MIDI控制器和第三方插件。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。














