Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization XStream<-&燃气轮机;替代二进制格式(例如协议缓冲区)_Serialization_Xml Serialization_Protocol Buffers_Xstream_Thrift - Fatal编程技术网

Serialization XStream<-&燃气轮机;替代二进制格式(例如协议缓冲区)

Serialization XStream<-&燃气轮机;替代二进制格式(例如协议缓冲区),serialization,xml-serialization,protocol-buffers,xstream,thrift,Serialization,Xml Serialization,Protocol Buffers,Xstream,Thrift,目前,我们使用XStream将web服务输入/输出编码为XML。但是,我们正在考虑切换到一种二进制格式,带有用于多种语言(protobuf、Thrift、Hessian等)的代码生成器,以便更轻松地支持新客户机,减少对手工编码的依赖(同时更好地支持包含二进制数据的消息格式) 但是,服务器上的大多数对象都是POJO,XStream通过反射和注释处理序列化,并且大多数库都假设它们将自己生成POJO。我可以想出几种方法来连接替代库: 为目标格式编写XStream封送处理程序 编写自定义代码,将POJO

目前,我们使用XStream将web服务输入/输出编码为XML。但是,我们正在考虑切换到一种二进制格式,带有用于多种语言(protobuf、Thrift、Hessian等)的代码生成器,以便更轻松地支持新客户机,减少对手工编码的依赖(同时更好地支持包含二进制数据的消息格式)

但是,服务器上的大多数对象都是POJO,XStream通过反射和注释处理序列化,并且大多数库都假设它们将自己生成POJO。我可以想出几种方法来连接替代库:

  • 为目标格式编写XStream封送处理程序

  • 编写自定义代码,将POJO封送至替代库生成的类或从中封送

  • 对生成的类进行子类化以实现POJO逻辑。可能需要重新编写。(我也提到过我们想用陶土吗?)

  • 使用另一个同时支持反射(如XStream)和代码生成的库

  • 但是,我不确定哪种技术最适合上述技术。

    (1)可能没有那么多工作,因为许多序列化库都包含一个助手API,它知道如何读取/写入原语值和分隔符

    (2) 可能为您提供了最广泛的工具选择:(有些工具与语言无关)。有缺陷但希望不是完全无用的基准:

    这些工具中的许多都会生成类,需要编写代码才能与POJO进行转换。直接使用POJO的工具通常不是语言中立的

    (3) 似乎是个坏主意(对你的具体项目一无所知)。我通常保持我的消息类没有任何其他逻辑

    (4) (支持协议缓冲区格式)允许您描述如何序列化POJO。但是,编写这个模式可能会比编写代码在POJO和某些工具生成的类之间进行转换更费力,更容易出错

    Protostuff也可以通过反射,但这可能会产生一种感觉有点以Java为中心的消息格式