-1

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!

Bengt
  • 3,798
  • 2
  • 21
  • 28

1 Answers1

1

If java and python language support is sufficient, one alternative you might consider is Versile (full disclosure: I am one of the developers). Supports bi-directional object interaction. That is also how you would implement "registering to events", by providing an object to a peer for event callbacks. Best source of more info is Versile Python documentation overview and examples.

Versile
  • 308
  • 1
  • 4
  • Hi! Thank you for the input; I will do some experiments in the next days and take Versile in consideration. However, since most client applications will run on mobile devices (Android, iOS, etc) I could need more language support. Anyway, Java is good for the start and even might be enough for the first time. – Bengt Jun 15 '13 at 13:31