Apache Thrift和Google的Protocol Buffers之间最大的优缺点是什么?
Apache Thrift和Google的Protocol Buffers之间最大的优缺点是什么?
它们都提供许多相同的功能;但是,它们之间存在一些区别:
Set
类型基本上,它们基本等价(根据我所了解的,Protocol Buffers稍微更加高效)。
map
。 - KindDragon另一个重要的区别是默认支持的语言不同。
两者都可以扩展到其他平台,但这些是开箱即用的语言绑定。
RPC是另一个重要的区别。Thrift生成代码来实现RPC客户端和服务器,而Protocol Buffers似乎主要设计为仅数据交换格式。
option optimize_for = SPEED
,否则您可能想要执行的大多数操作与protobuf对象(创建,序列化,反序列化)相比要慢得多。要更深入地了解差异,请查看此开源项目中的源代码差异。
正如我在"Thrift vs Protocol buffers"话题中所说:
参考Thrift vs Protobuf vs JSON比较:
此外,对于这些解决方案,还有许多有趣的附加工具可用,这可能会起到决定性作用。以下是Protobuf的示例:Protobuf-wireshark,protobufeditor。
我认为大多数观点忽略了Thrift是一个RPC框架的基本事实,它具有使用各种方法(二进制、XML等)序列化数据的能力。
Protocol Buffers仅设计用于序列化,它不像Thrift那样是一个框架。
还有一件显而易见但尚未提及的事情是,它们都可以是优点也可以是缺点(对于两者都是如此),那就是它们是二进制协议。这允许更紧凑的表示和可能更高的性能(优点),但会降低可读性(或者说,调试能力)(缺点)。
此外,与像xml(甚至json)这样的标准格式相比,它们都具有较少的工具支持。
(编辑)这里有一个有趣的比较,涉及大小和性能差异,并包括其他一些格式(xml、json)的数字。