Thrift vs Protocol缓冲区

时间:2010-11-27 19:11:32

标签: c++ windows protocol-buffers thrift

我已经使用PB很长一段时间了,但是,Thrift一直在我的脑海里。

我认为节俭的主要优点是:

  1. 本地集合(即向量,集等)与PB重复提供类似但不完全相似的功能(除非你深入研究文档所说“在大多数情况下不需要”的RepeatedField),否则没有迭代器。) / LI>
  2. 提供了一个不错的RPC实现,而不只是挂钩插入你自己的。
  3. 更多官方支持的语言(PB为Java,C ++,Python提供“官方”支持)
  4. Thrift的缺点:

    1. RPC实现意味着我无法插入我自己的(例如)加密/身份验证层。
    2. Windows支持似乎不太好。
    3. PB肯定似乎有更容易获得的文档。
    4. 中性:

      • Windows(Thrift)上.lib / .dll的未知大小。
      • Windows上大尺寸的.lib(PB,但确实提供了明显更小的-lite)。
      • 速度方面,它们似乎都很相似。

      我还没准备好冒险尝试切换到Thrift,有人可以给我更多的优点/缺点,或者有理由去某种方式吗?

      谢谢!

4 个答案:

答案 0 :(得分:18)

正如我所说的那样"Biggest differences of Thrift vs Protocol Buffers?"话题:

参考Thrift vs Protobuf vs JSON comparison

此外,这些解决方案还有许多有趣的附加工具可供选择。以下是Protobuf的示例:Protobuf-wiresharkprotobufeditor

答案 1 :(得分:9)

您可能希望先分析您的需求:

您需要与协议无关的格式吗?例如,您想实现自定义协议还是需要100%可移植性?在这种情况下使用PB。

如果您使用Thrift的默认协议,并且需要开始使用协议,请务必使用Thrift。

希望这有帮助。

答案 2 :(得分:8)

我们的项目坚持使用Thrift通过协议缓冲区的主要原因是协议缓冲区不会自动生成完整的RPC服务器,并且PB的现有解决方案似乎都相当不稳定。只需我0.02美元。

答案 3 :(得分:0)

您需要详细说明您的用例。否则这是“哪个更好,汽车还是卡车?”问题