IPC的RMI替代方案?

时间:2013-01-11 07:20:21

标签: java ipc rmi rpc

我有2个进程需要通过同一台PC和不同的PC进行通信。在本地案例中,流程沟通是在不同的流程之间进行的,例如流程A和流程B 在远程情况下,它将是在不同PC中运行的进程A的2个实例 我将从头开始创建它们,我想知道什么是最好的方法。我知道RMI和套接字,但我想知道我所描述的情况,并考虑到交换的消息很小,API的数量非常小,如果有一个标准的方法/库。
任何建议都非常受欢迎

@EJP评论后更新:
我的兴趣是1)以轻松的方式实现通信要求,因为暴露的API将非常小,消息以及2)尽可能使用和学习新的流行框架(我已经知道RMI和套接字)

5 个答案:

答案 0 :(得分:4)

如果您只是在寻找消息传递框架,那么有很多可用的消息框架,例如

但是当您使用第三方框架时,您就会在应用程序中添加其他依赖项。如果它像你的情况一样非常简单,那么编写一个TCP客户端/服务器对于客户端/服务器范例就足够了,或者如果你正在寻找发布者/订阅者范例,那么你可以考虑使用UDP多播。如果您希望能够编组和解组数据以缓冲并使用典型的JAVA套接字API将其发送到网络,那么您只需要数据类来扩展Serializable。

答案 1 :(得分:2)

我强烈建议看一下Thrift。从我使用的所有技术(Web服务,RMI,XML-RPC,Corba浮现在脑海中),它是我最喜欢的。基本上涉及的步骤是:

  1. 下载Thrift编译器。
  2. 添加Maven依赖项(确保它与编译器的版本相同!)我目前使用的是0.8.0。
  3. 写你的Thrift IDL(非常简单,google for it,因为有很多例子)。
  4. 将其编译为Java。
  5. 编写您的服务器/客户端。
  6. 通常,您可以在大约30行代码中将服务器和客户端组合在一起。在速度和可靠性方面,它从未让我失望过。

答案 2 :(得分:0)

答案 3 :(得分:0)

您可能会看一下Versile Java(完全披露:我是其中一位开发人员),它至少满足您的标准#1。从API文档中,以下是编写remote-enabled objects,运行serviceconnecting到服务的一些示例。

答案 4 :(得分:0)

如果你想学习新东西,我会看看OpenSplice。原因很简单,上面提到的技术是唯一一个为您提供以数据为中心的抽象的技术。

OpenSplice的一个很酷的功能是为您提供全局数据空间的抽象,但这个全局数据空间的实现是完全分布式的,并且性能非常高。

看一下http://www.slideshare.net/angelo.corsaro提供的一些幻灯片,我相信你会爱上这项技术。

最后OpenSplice是开源的。

快乐黑客。

A +