3 ms·
Thrift and Avro -- and later, gRPC, but not protobuf -- are full RPC stacks where you use an IDL to codegen your endpoints, and those endpoints communicate usin
by niftich 10y ago
Thrift and Avro -- and later, gRPC, but not protobuf -- are full RPC stacks where you use an IDL to codegen your endpoints, and those endpoints communicate using their own serialization. Since this is form-on-the-wire is "internal" concern not meant for direct public consumption, I find this acceptable.
Meanwhile, XML-RPC (which is not a serialization format!), JSON-RPC, SOAP, Swagger, are stacks that intentionally leave open the possibility that someone will come along with and consume the form-on-the-wire directly, outside of the tooling of the environment. Most in-the-wild JSON-responding APIs have the same expectation.
IDLs themselves are a very old idea, probably because we like declarative ways of specifying contracts that are then applicable across a heterogeneous environment, or in different languages and runtimes, and so on.
As for why there's dozens of offshoots of standalone serialization formats which are all predominantly occupied with the efficient packing of numbers while keeping the general data model of JSON, I can't answer [1].
[1] https://news.ycombinator.com/item?id=12440783 https://news.ycombinator.com/item?id=12440783