I am currently developing a client-server system, where each client owns one object exclusively on the server. Basic interaction between the client and its object shall be done via remote procedure calls (RPC). Additionally, a client must be able to register to events related to its object. One approach would be a publish/subscribe model. However I would prefer the object on the server using RPC to call registered client methods (distributed observer).
Questions: Do you know a lightweight, multi-language RPC library, which allows bidirectional calls? Are there better techniques for my purposes than RPC? What do you think?
The server will be written in Java, while clients can be written in different languages. The first client application will be running on Android. All networking is done within a (wireless) local area network. Ease of integration has a high priority for me, so a high level API would be great.
Research so far (short):
- RMI is restricted to JAVA
- SOAP and REST don't seem to allow to bidirectional RPC
- Protobuf is a serialization library, but RPC can be easily realized on top. RPC implementations based on protobuf are available, but most of them only support one or two languages.
- Thrift does not directly support bidirectional RPC, but it is possible.
- Message broker like RabbitMQ and ActiveMQ are capable, but may be an overkill. Also an additional server must be running.
- CORBA seems to be very complex and I am not sure if it's still state of the art
Please feel free to correct me!