Sign in or Join FriendFeed
FriendFeed is the easiest way to share online. Learn more »
Dare Obasanjo
The Revenge of RPC: Google Protocol Buffers and Facebook Thrift - http://www.25hoursaday.com/weblog...
Right! Great point about loose coupling. Protocol buffers, or other explicitly modeled binary serialization formats are really only supposed to be used when you control both endpoints. They are most certainly not a replacement for introspectable formats like XML or even JSON, for uncontrolled clients such as are found over the web. And beyond that, protobufs are simply the serialization mechanism, not an RPC framework. Of course we do use them internally for RPC, but that's not all their good for. Serializing data to bigtable is a very common use case for protobufs, for example. - DeWitt Clinton
We haven't really seen a great model for RESTful (http-based) RPC emerge yet. AtomPub is fantastic for doing RESTful interactions with collections and documents, but that's not RPC. In fact, AtomPub breaks down when you start doing RPC, which for lack of a better alternative, people keep trying to do. I eagerly await the day of something like AtomRPC, but that may be socially challenging, as the "atoms" of Atom are the 'feed' and the 'entry', neither of which are appropriate for RPC. - DeWitt Clinton
Of course, the semantics of REST may simply be inappropriate for RPC in the first place... (That's not a dig on REST at all, it is the perfect model for documents and collections, but RPC is not state exchange.) - DeWitt Clinton
I think we should be very careful not to confuse the "portability" (i.e. the API or the interaction pattern that decouples the application code from the protocol stack) with the "interoperability" aspect. RPC is an interaction pattern used to build a distributed service. In almost 90% of the cases it is built on top of the common BSD socket as the application/comm interface. - Vlado Handziski
But just as the defacto standardization on the BSD socket (the API) does not preclude the need to standardize TCP (the protocol) the usage of an higher-level interaction pattern like RPC (portability) is independent from the fact whether one uses a closed binary protocol or not (interoperability). Of course in some cases these two are intertwined but keeping them conceptually separate helps in understanding the influences of the different parts of the puzzle - Vlado Handziski