轻量级,多语言和双向RPC

时间:2013-06-14 01:20:08

标签: java rpc bidirectional

我目前正在开发一个客户端 - 服务器系统,其中每个客户端只在服务器上拥有一个对象。客户端与其对象之间的基本交互应通过远程过程调用(RPC)完成。此外,客户端必须能够注册与其对象相关的事件。一种方法是发布/订阅模型。但是我更喜欢服务器上的对象使用RPC来调用注册的客户端方法(分布式观察者)。

问题: 你知道一个轻量级,多语言的RPC库,它允许双向调用吗? 我的目的是否有比RPC更好的技术? 你觉得怎么样?

服务器将用Java编写,而客户端可以用不同的语言编写。第一个客户端应用程序将在Android上运行。所有网络都在(无线)局域网内完成。易于集成对我来说是一个高优先级,因此高级API将是很好的。

到目前为止的研究(简称):

  • RMI仅限于JAVA
  • SOAP和REST似乎不允许双向RPC
  • Protobuf是一个序列化库,但RPC可以轻松实现。可以使用基于protobuf的RPC实现,但大多数只支持一种或两种语言。
  • Thrift不直接支持双向RPC,但它是可能的。
  • 像RabbitMQ和ActiveMQ这样的消息代理是有能力的,但可能是一种矫枉过正。此外,还必须运行其他服务器。
  • CORBA似乎非常复杂,我不确定它是否仍然是最先进的

请随时纠正我!

1 个答案:

答案 0 :(得分:1)

如果java和python语言支持足够,你可以考虑的另一个选择是Versile(完全披露:我是开发人员之一)。支持双向对象交互。这也是你如何实现“注册到事件”,通过向对等体提供事件回调的对象。更多信息的最佳来源是Versile Python documentation概述和示例。