Protobuf IDL 支持
本页说明 Apache Fory 如何处理 Protocol Buffers(.proto)schema、protobuf 概念如何映射到 Fory,以及 protobuf 专用 Fory 扩展选项的使用方式。
本页内容
- 如何在具体场景下选择 protobuf 或 Fory
- 迁移时需要关注的语法与语义差异
.proto文件中支持的 Fory 扩展选项- 从 protobuf 迁移到 Fory 的实践路径
快速决策指南
| 场景 | 建议格式 |
|---|---|
| 主要构建 gRPC API,依赖 protobuf 工具链 | Protocol Buffers |
| 需要极致对象图性能与引用跟踪 | Fory |
| 需要在序列化数据中表达循环/共享引用 | Fory |
| 需要强 unknown-field 语义保证线格式兼容 | Protocol Buffers |
| 希望直接使用原生 struct/class,而非 protobuf 包装类型 | Fory |
Protobuf 与 Fory 对比
| 维度 | Protocol Buffers | Fory |
|---|---|---|
| 主要目标 | RPC/消息契约 | 高性能对象序列化 |
| 编码模型 | Tag-Length-Value | Fory 二进制协议 |
| 引用跟踪 | 非内建 | 一等支持(ref) |
| 循环引用 | 不支持 | 支持 |
| 未知字段 | 保留 | 不保留 |
| 生成类型 | protobuf 专用模型类型 | 语言原生构造 |
| gRPC 生态 | 原生成熟 | 持续建设中(活跃开发) |
Fory 的 gRPC 支持仍在持续开发中。当前生产级 gRPC 工作流里,protobuf 仍是更成熟的默认选择。