最基本的分布式Java - 我应该使用什么通信方法?

时间:2012-03-03 15:38:56

标签: java jaxb rmi xml-rpc rpc

我正在开发一个可以在客户端或服务器代码中使用的库。更具体地说,您为库创建了某个类的实例,并将其称为服务器或客户端。

客户端必须向服务器发送大约5个属性而没有任何层次结构,服务器必须回答一个属性或一些错误描述。

客户端和服务器不必共享任何状态,因此如果服务器更改客户端提供的信息,则客户端不必了解这些更改。

此刻,我将所有内容解码为带有特殊分隔字符的字符串,并通过TCP-Socket发送。我想在这里有更多的类型安全性并考虑使用RMI,但就我的简短研究而言,RMI强制对象的共享状态,这不是我的目标。因此我可能需要某种Web服务解决方案?我应该使用JAXB来描述消息并通过套接字发送xml消息吗?是否有一些好的库可以通过Web发送JAXB注释对象,并且仍然可以控制通信,网络,服务器故障?

软件应该始终能够在基本的JRE安装上运行。

感谢您的建议。

2 个答案:

答案 0 :(得分:0)

标签中列举的任何技术都很好。您还可以查看Google Protocol BuffersNetty进行通信。但我不会称他们为基本的。 JSON也是一个很好的方法。 JAXB包含在JVM中,因此它可以在没有任何额外库的情况下工作。

答案 1 :(得分:0)

您可能考虑的另一项技术是Versile Java(完全披露:我是一名Versile开发人员);它正在开发中,但已经相当稳定。请参阅链接以获取一个简单示例。 Versile Java执行对象级RMI,仅依赖于标准Java库。

Versile Java是“基本的”,因为您所描述的场景类型非常容易实现,无需进行任何网络级编程(均由平台内部处理)。从某种意义上讲它是“非基本的”,它提供了比传递不可变数据结构更多的功能。