概览
Fory IDL 是 Apache Fory 的 Schema 定义语言,可实现类型安全的跨语言序列化。 你只需定义一次数据结构,即可为 Java、Python、Go、Rust 和 C++ 生成原生数据结构代码。
示例 Schema
Fory IDL 提供了简单直观的语法来定义跨语言数据结构:
package example;
enum Status {
PENDING = 0;
ACTIVE = 1;
COMPLETED = 2;
}
message User {
string name = 1;
int32 age = 2;
optional string email = 3;
list<string> tags = 4;
}
message Item {
string sku = 1;
int32 quantity = 2;
}
message Order {
ref User customer = 1;
list<Item> items = 2;
Status status = 3;
map<string, int32> metadata = 4;
}
message Dog [id=104] {
string name = 1;
int32 bark_volume = 2;
}
message Cat [id=105] {
string name = 1;
int32 lives = 2;
}
union Animal [id=106] {
Dog dog = 1;
Cat cat = 2;
}
为什么选择 Fory IDL?
Schema 优先开发
在 Fory IDL 中一次定义数据模型,即可在所有语言中生成一致且类型安全的代码。这样可以确保:
- 类型安全:在编译期而不是运行期发现类型错误
- 一致性:各语言使用相同字段名、类型和结构
- 文档性:Schema 本身就是可持续演进的文档
- 可演进性:可在所有实现中受控地进行 Schema 变更
Fory 原生能力
与通用 IDL 不同,Fory IDL 专门为 Fory 序列化设计:
- 引用跟踪:通过
ref一等支持共享引用和循环引用 - 可空字段