轻量级、多语言和双向 RPC
Posted
技术标签:
【中文标题】轻量级、多语言和双向 RPC【英文标题】:Lightweight, multi-language and bidirectional RPC 【发布时间】:2013-06-14 01:20:07 【问题描述】:我目前正在开发一个客户端-服务器系统,其中每个客户端在服务器上独占拥有一个对象。客户端与其对象之间的基本交互应通过远程过程调用 (RPC) 完成。此外,客户端必须能够注册与其对象相关的事件。一种方法是发布/订阅模型。但是我更喜欢服务器上的对象使用 RPC 来调用注册的客户端方法(分布式观察者)。
问题: 你知道允许双向调用的轻量级多语言 RPC 库吗? 有没有比 RPC 更适合我的技术? 你怎么看?
服务器将用 Java 编写,而客户端可以用不同的语言编写。第一个客户端应用程序将在 android 上运行。所有网络都在(无线)局域网内完成。易于集成对我来说是重中之重,因此高级 API 会很棒。
迄今为止的研究(短):
RMI 仅限于 JAVA SOAP 和 REST 似乎不允许双向 RPC Protobuf 是一个序列化库,但在上面可以轻松实现 RPC。基于 protobuf 的 RPC 实现是可用的,但大多数只支持一种或两种语言。 Thrift 不直接支持双向 RPC,但有可能。 像 RabbitMQ 和 ActiveMQ 这样的消息代理是有能力的,但可能有点过头了。此外,还必须运行额外的服务器。 CORBA 似乎非常复杂,我不确定它是否仍然是最先进的请随时纠正我!
【问题讨论】:
【参考方案1】:如果 java 和 python 语言支持足够,您可以考虑的另一种选择是Versile(完全披露:我是开发人员之一)。支持双向对象交互。这也是您将如何实现“注册到事件”的方式,方法是向对等方提供一个对象以进行事件回调。更多信息的最佳来源是 Versile Python documentation 概述和示例。
【讨论】:
嗨!谢谢你的反馈;我会在接下来的几天里做一些实验,并考虑 Versile。但是,由于大多数客户端应用程序将在移动设备(Android、ios 等)上运行,我可能需要更多的语言支持。无论如何,Java 是很好的开始,甚至可能第一次就足够了。以上是关于轻量级、多语言和双向 RPC的主要内容,如果未能解决你的问题,请参考以下文章