我目前正在开发一个客户端-服务器系统,其中每个客户端在服务器上独占一个对象。客户端与其对象之间的基本交互应通过远程过程调用 (RPC) 完成。此外,客户端必须能够注册与其对象相关的事件。一种方法是发布/订阅模型。但是我更喜欢服务器上的对象使用 RPC 来调用注册的客户端方法(分布式观察者)。
问题: 您知道允许双向调用的轻量级、多语言 RPC 库吗?有没有比 RPC 更适合我的技术?你怎么看?
服务器将用 Java 编写,而客户端可以用不同的语言编写。第一个客户端应用程序将在 Android 上运行。所有网络都在(无线)局域网内完成。易于集成对我来说是重中之重,因此高级 API 会很棒。
迄今为止的研究(短):
- RMI 仅限于 JAVA
- SOAP 和 REST 似乎不允许双向 RPC
- Protobuf 是一个序列化库,但是在上面可以很容易地实现 RPC。基于 protobuf 的 RPC 实现是可用的,但大多数只支持一种或两种语言。
- Thrift 不直接支持双向 RPC,但有可能。
- 像 RabbitMQ 和 ActiveMQ 这样的消息代理是有能力的,但可能有点过头了。还必须运行额外的服务器。
- CORBA 似乎非常复杂,我不确定它是否仍然是最先进的
请随时纠正我!