轻量级、多语言和双向 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的主要内容,如果未能解决你的问题,请参考以下文章

用 Angular 构建多语言和多方向网站的最佳方法是啥?

OSChina 本周软件推荐 —— zbus 轻量级服务总线/消息队列

GRPC代替webapi Demo。

轻量级分布式 RPC 框架

轻量级分布式 RPC 框架

一个轻量级分布式RPC框架--NettyRpc