Apache Thrift
Language-independent stack for point-to-point RPC implementation
...Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation. Thrift provides clean abstractions and implementations for data transport, data serialization, and application level processing. Thrift is specifically designed to support non-atomic version changes across client and server code. This allows you to upgrade your server while still being able to service older clients; or have newer clients issue requests to older servers. For more details on Thrift's design and implementation, see the Thrift whitepaper included in this distribution, or at the README.md file.