thrift由facebook出品,protobuffer由google出品;
下面對比一下這兩個的區別。參考:http://zhidao.baidu.com/link?url=yNLBeHhWokfwB677UZHoyv4vLyPOZEEQypUMiX__YIhp5E7UmpvIWTArKPMab32xj5gkRo4a6CXoZ1nxore82kXyOzfXdaRRhOAPynxYmB7
1)Thrift: 支持的語言更廣泛一些c++, java, python,ruby, csharp, haskell, ocmal, erlang, cocoa, php
protobuf 目前還是只支持c++, java, python
2)Thrift提供的功能更豐富一些: Thrift提供了簡單的RPC構架(其實不簡單了, block, nonblock的都有了…..)
protobuf好像一心一意做好自己的事情,只提供了序列化和反序列化的功能。
3)Thrift支持多種協議格式. Thrift的代碼實現,有專門的TProtocol和TTransport抽象,相互配合,可以實現多種協議,方便集成各種傳輸方式。至少目前Thrift就能使用json作為序列化協議。
protobuf只安心一種協議,並下決心把這個格式做好。輸入輸出也是標准的stream.
4)thrift目前不支持Windows平台
protobuf沒有這個問題,提供了visual studio的項目文件,可以很順利的在windows平台下編譯。
5)thrift側重點是構建誇語言的可伸縮的服務,特點就是支持的語言多,同時提供了完整的rpc service framework,可以很方便的直接構建服務,不需要做太多其他的工作。
相同點:
數據類型相對固定的情況下,不論是thrift還是protobuf都會比直接處理xml要方便很多。