通过套接字发送对象,但不同的语言客户端,如何使对象序列化?

时间:2012-04-03 06:21:49

标签: java sockets cross-language

我有一个Java服务器,它将java可序列化对象发送到我的客户端,并接收java可序列化对象以供执行。如果我的客户端也是java编写的,这很好,允许我在任何问题中进行通信。

但是现在,我想将我的程序扩展到不仅是java客户端,客户端可能用C语言编写,目标C,python或php。所以,我想做一些事情来“修改”客户端请求到一个java对象,并发送回Server。修道院过程,我可以使用JSON接收,并为服务器构建一个Java对象,但我还需要一个将Java对象转换回JSON到客户端的层。

我的问题是除了制作JSON-Java Translation层之外,还有其他方法吗?此外,我们可以在服务器端更改一些代码,但我们必须使用Java作为我们的主要语言。有什么建议?感谢。

2 个答案:

答案 0 :(得分:0)

还有其他为此设计的库,如协议缓冲区和节俭。

http://thrift.apache.org/

http://code.google.com/p/protobuf/

答案 1 :(得分:0)

我使用Netty API来设计我的协议,如果您能够理解类似NIO的字节和缓冲区API,那么这样做很快。 设计使用符合您需求的编码器和解码器概念,有很多默认的编码器和解码器实现,用于压缩,使用ssl ......

你遇到的问题似乎是这样的: JBoss Netty with JSON

我不太了解JSON,但大部分时间也可以快速轻松地设计自己的协议。

您是否需要针对任何类型的Object进行通用序列化过程,或者您只需要序列化一些String和基本类型(Integer,Short,Float..etc)? 在简单对象的情况下,自己做包装是很容易和快得多的。

如果对象非常简单,我猜这就是这种情况,你需要设计自己的“协议”规范,这意味着如何将每个Object转换成一系列原始类型,字符串和数组。在每种语言中编写编码器和解码器都应该很容易。

祝你好运