跨语言序列化
Apache Fory™ 通过 xlang 序列化格式支持 Java 和其他语言(Python、Rust、Go、JavaScript 等)之间的无缝数据交换。这使得多语言微服务、多语言数据管道和跨平台数据共享成为可能。
启用跨语言模式
要序列化供其他语言使用的数据,使用 Language.XLANG 模式:
import org.apache.fory.*;
import org.apache.fory.config.*;
// 使用 XLANG 模式创建 Fory 实例
Fory fory = Fory.builder()
.withLanguage(Language.XLANG)
.withRefTracking(true) // 为复杂图启用引用跟踪
.build();
为跨语言兼容性注册类型
类型必须使用一致的 ID 或名称在所有语言中注册。Fory 支持两种注册方法:
按 ID 注册(推荐用于性能)
public record Person(String name, int age) {}
// 使用数字 ID 注册 - 更快更紧凑
fory.register(Person.class, 1);
Person person = new Person("Alice", 30);
byte[] bytes = fory.serialize(person);
// bytes 可以被 Python、Rust、Go 等反序列化。
优点:更快的序列化,更小的二进制大小 权衡:需要协调以避免跨团队/服务的 ID 冲突
按名称注册(推荐用于灵活性)
public record Person(String name, int age) {}
// 使用字 符串名称注册 - 更灵活
fory.register(Person.class, "example.Person");
Person person = new Person("Alice", 30);
byte[] bytes = fory.serialize(person);
// bytes 可以被 Python、Rust、Go 等反序列化。
优点:不容易冲突,跨团队管理更容易,无需协调 权衡:由于字符串编码,二进制大小稍大