我们目前使用 XStream 将我们的 Web 服务输入/输出编码为 XML。但是,我们正在考虑切换到具有多种语言(protobuf、Thrift、Hessian 等)的代码生成器的二进制格式,以便更轻松地支持新客户,减少对手动编码的依赖(也更好地支持我们的包含二进制数据的消息格式) .
然而,我们在服务器上的大多数对象都是 POJO,使用 XStream 通过反射和注释处理序列化,并且这些库中的大多数假设它们将自己生成 POJO。我可以想到几种连接替代库的方法:
为目标格式编写一个 XStream 封送拆收器。
编写自定义代码以将 POJO 编组到/来自替代库生成的类。
子类化生成的类以实现 POJO 逻辑。可能需要一些重写。(我还提到我们想使用 Terracotta 吗?)
使用另一个同时支持反射(如 XStream)和代码生成的库。
但是我不确定哪个序列化库最适合上述技术。