我已经使用PB相当长一段时间了,但是Thrift一直在我脑海中。
我认为Thrift的主要优点如下:
- 本地集合(例如vector、set等)与PB的重复提供类似但不完全相同的功能相比具有更好的功能(没有迭代器,除非您深入研究RepeatedField,而文档指出“在大多数情况下不需要它”)。
- 提供了一种体面的RPC实现,而不仅仅是钩子来插入自己的实现。
- 支持的语言更多(PB只为Java、C++和Python提供“官方”支持)
Thrift的缺点如下:
- RPC实现意味着我无法在其上插入自己的(例如)加密/身份验证层。
- Windows支持似乎不太好。
- PB明显具有(如果不是更好的话)更易于访问的文档。
中立:
- Windows上.lib/.dll的大小未知(Thrift)。
- .lib在Windows上很大(PB,但它提供了一个更小的-lite版本)。
- 在速度上,它们都似乎是相似的。
我还没有准备好切换到Thrift,有人能给我更多的优缺点或者选择其中一种的原因吗?
谢谢!