Thrift vs Protocol buffers

please delete me picture please delete me · Nov 27, 2010 · Viewed 12.3k times · Source

I've been using PB for quite a while now, but, Thrift has constantly been at the back of my mind.

The primary advantages of thrift, as I see it are:

  1. Native collections (i.e, vector, set etc) vs PBs repeated providing functionality similar to, but not quite like (no iterators unless you dig into RepeatedField which the documentation states "shouldn't be required in most cases").
  2. A decent RPC implementation provided, instead of just hooks to plug your own in.
  3. More officially supported languages (PB offers "official" support for Java, C++, Python)

The cons of Thrift:

  1. The RPC implementation means I can't plug in my own (for example) encryption/authentication layer on top.
  2. Windows support doesn't seem to be great.
  3. PB definitely seems to have, if not better, more accessible documentation.

Neutral:

  • Unknown size of .lib/.dll on Windows (Thrift).
  • Large size of .lib on Windows (PB, but it does offer a -lite which is significantly smaller).
  • Speed wise, they both seem to be similar.

I'm not quite ready to take the plunge and switch to Thrift yet, can anyone offer me more pros/cons, or reasons to go one way or the other?

Thanks!

Answer

Grzegorz Wierzowiecki picture Grzegorz Wierzowiecki · Aug 27, 2011

As I've said as "Biggest differences of Thrift vs Protocol Buffers?" topic :

Referring to Thrift vs Protobuf vs JSON comparison :

Additionally, there are plenty of interesting additional tools available for those solutions, which might decide. Here are examples for Protobuf: Protobuf-wireshark , protobufeditor.