Thrift vs Protocol缓冲区

ple*_* me 43 c++ windows thrift protocol-buffers

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

正如我所看到的那样,节俭的主要优点是:

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

Thrift的缺点:

  1. RPC实现意味着我无法在顶部插入我自己的(例如)加密/认证层.
  2. Windows支持看起来不是很好.
  3. PB肯定似乎有更容易获得的文档,如果不是更好的话.

中性:

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

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

谢谢!

Grz*_*cki 18

正如我所说的"Thrift与Protocol Buffers的最大差异?" 话题 :

参考Thrift vs Protobuf vs JSON比较:

此外,还有许多有趣的附加工具可供这些解决方案使用,这些工​​具可能会决定.以下是Protobuf的例子:Protobuf-wireshark,protobufeditor.


awd*_*nld 9

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

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

如果您使用Thrift的默认协议,并且您需要一个协议,那么请务必使用Thrift.

希望这可以帮助.


ale*_*ras 8

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


Joh*_*nck 0

您需要详细指定您的用例。否则,这就是“汽车和卡车哪个更好?” 问题。

  • 并不真地; Thrift 和 Protocol Buffers 的用例是相似的。在基本层面上,它们都是实现跨平台数据序列化的通用方法。在更高的层面上,两者都可以用来实现跨平台的客户端/服务器应用程序。它们都足够通用,可以用作序列化格式,或者用作更大系统中的构建块。但是,在他们的基地,他们提供同样的东西。问题是,这两种实施方式是否“更好”?而且,在更高的层面上,所提供的附加服务值得吗?(与节俭)。 (11认同)