Apache Thrift

It uses a remote procedure call (RPC) framework and combines a software stack with a code generation engine to build cross-platform services.

Thrift can connect applications written in a variety of languages and frameworks, including ActionScript, C, C++,[4] C#,[5] Cocoa, Delphi, Erlang, Go, Haskell, Java, JavaScript, Objective-C, OCaml, Perl, PHP, Python, Ruby, Elixir, Rust, Scala, Smalltalk, and Swift.

[6] The implementation was described in an April 2007 technical paper released by Facebook, now hosted on Apache.

In contrast to built-in types, created data structures are sent as a result of generated code.

With Thrift, it is possible to define a service and change the protocol and transport without recompiling the code.

The Apache Thrift API client/server architecture