43

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

在我看来,节俭的主要优点是:

  1. 本机集合(即向量、集合等)与 PB 重复提供的功能类似于但不太像(没有迭代器,除非您深入研究文档指出“在大多数情况下不需要”的 RepeatedField)。
  2. 提供了一个不错的 RPC 实现,而不仅仅是插入你自己的钩子。
  3. 更多官方支持的语言(PB 为 Java、C++、Python 提供“官方”支持)

节俭的缺点:

  1. RPC 实现意味着我不能在顶部插入我自己的(例如)加密/身份验证层。
  2. Windows 支持似乎不是很好。
  3. PB 肯定似乎有(如果不是更好的话)更易于访问的文档。

中性的:

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

我还没有准备好冒险并切换到 Thrift,任何人都可以为我提供更多优点/缺点,或者选择一种方式或另一种方式的理由吗?

谢谢!

4

4 回答 4

18

正如我所说的“Thrift 与 Protocol Buffers 的最大区别?” 话题 :

参考Thrift vs Protobuf vs JSON 比较

此外,还有许多有趣的附加工具可用于这些解决方案,这可能会有所决定。以下是 Protobuf 的示例:Protobuf-wiresharkprotobufeditor

于 2011-08-27T18:31:47.193 回答
9

您可能想先分析您的需求:

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

如果您对 Thrift 的默认协议感到满意,并且您需要一个协议开始,请务必使用 Thrift。

希望这可以帮助。

于 2011-01-15T13:56:01.737 回答
8

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

于 2011-01-10T19:56:02.090 回答
0

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

于 2010-11-28T00:44:11.570 回答