I am developing a server that exposes multiple services to other processes (they could be both servers or hmi clients): those could be hosted on the same machine or not and they could be written in multiple languages (java, c++).

I would like an advice to choose the proper protocol (or protocols) to expose the services:

  • CORBA could be the best choice but it seems to me too complex (it needs the framework, IDLs, class generation..)
  • SOAP has too much overhead for reasonable same machine inter process communication
  • REST could be a good trade-off in terms of complexity, overhead and usability in both conditions

Is my analysis correct? Should I search for other protocols (especially for inter process communication on the same machine)?

  • 1
    Two potential drawbacks of REST are: (1) you're pulling in a lot of complexity in form the HTTP protocol that you don't actually need. (2) REST APIs are stateless, so you have to manually implement session management. Client and server don't share objects, they just transfer messages. But those can also be advantages: HTTP is a feature-rich, well-understood platform, and statelessness/shared-nothing can simplify the REST server to the point where it's just a bit of trivial boilerplate for routing and serialization. – amon Jul 17 '17 at 8:29
  • 1
    I would also take a look at Apache Thrift. It's like CORBA but meant for the 21st century, and much leaner protocol than soap or rest. thrift.apache.org – Samuel Jul 17 '17 at 21:08
  • While your question is about protocols, I would think the implementations of these protocols are equally important. Which technique is best supported, for example. – Frank Hileman Jul 19 '17 at 1:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.