C# 序列化指南
Apache Fory™ C# 是面向 .NET 的高性能跨语言序列化运行时。它提供对象图序列化、Schema 演进、泛型对象载荷支持,以及面向并发负载的线程安全封装。
为什么选择 Fory C#?
- 面向 .NET 8+ 的高性能二进制序列化
- 与 Java、Python、C++、Go、Rust 和 JavaScript 中的 Fory 实现保持跨语言兼容
- 基于 source generator 的
[ForyObject]类型序列化器 - 可选引用跟踪,支持共享对象图和循环对象图
- 面向 Schema 演进的兼容模式
- 面向多线程服务的线程安全运行时
ThreadSafeFory
快速开始
要求
- .NET SDK 8.0+
- C# 语言版本 12+
从 NuGet 安装
引用单个 Apache.Fory 包即可。它同时包含运行时和 [ForyObject] 类型所需的 source generator。
<ItemGroup>
<PackageReference Include="Apache.Fory" Version="0.17.0" />
</ItemGroup>
基础示例
using Apache.Fory;
[ForyObject]
public sealed class User
{
public long Id { get; set; }
public string Name { get; set; } = string.Empty;
public string? Email { get; set; }
}
Fory fory = Fory.Builder().Build();
fory.Register<User>(1);
User user = new()
{
Id = 1,
Name = "Alice",
Email = "alice@example.com",
};
byte[] payload = fory.Serialize(user);
User decoded = fory.Deserialize<User>(payload);
核心 API
Serialize<T>(in T value)/Deserialize<T>(...)Serialize<object?>(...)/Deserialize<object?>(...),用于动态载荷Register<T>(uint typeId)以及基于命名空间和名称的注册 APIRegister<T, TSerializer>(...),用于自定义序列化器
文档
| 主题 | 说明 |
|---|---|
| 配置 | 构建器选项与运行时模式 |
| 基础序列化 | 强类型和动态序列化 API |
| 类型注册 | 注册用户类型和自定义序列化器 |
| 自定义序列化器 | 实现 Serializer<T> |
| 字段配置 | [Field] 特性与整数编码选项 |
| 引用 | 共享引用与循环引用处理 |
| Schema 演进 | 兼容模式行为 |
| 跨语言 | 互操作性指导 |
| 支持的类型 | 内置类型与生成类型支持 |
| 线程安全 | Fory 与 ThreadSafeFory 的用法 |
| 故障排查 | 常见错误与调试步骤 |