haz*_*zen 156
它们都提供许多相同的功能; 但是,存在一些差异:
Set类型基本上,它们是相当等效的(协议缓冲区比我读过的更有效).
Mik*_*ray 85
另一个重要区别是默认支持的语言.
两者都可以扩展到其他平台,但这些是开箱即用的语言绑定.
sai*_*ale 71
RPC是另一个关键区别.Thrift生成代码来实现RPC客户端和服务器,而协议缓冲区似乎主要设计为数据交换格式.
小智 57
option optimize_for = SPEED.要仔细查看差异,请查看此开源项目中的源代码差异.
Grz*_*cki 56
正如我所说的"Thrift vs Protocol buffers"主题:
参考Thrift vs Protobuf vs JSON比较:
此外,还有许多有趣的附加工具可供这些解决方案使用,这些工具可能会决定.以下是Protobuf的例子:Protobuf-wireshark,protobufeditor.
与python上的protobuff相比,我能够通过基于文本的协议获得更好的性能.但是,没有类型检查或其他花哨的utf8转换等... protobuff提供.
因此,如果您只需要序列化/反序列化,那么您可以使用其他东西.
http://dhruvbird.blogspot.com/2010/05/protocol-buffers-vs-http.html
协议缓冲区似乎有一个更紧凑的表示,但这只是我从阅读Thrift白皮书得到的印象.用他们自己的话说:
为了代码的简单和清晰起见,我们决定不进行一些极端的存储优化(即将小整数打包成ASCII或使用7位连续格式).当我们遇到需要它们的性能关键用例时,可以轻松地进行这些更改.
此外,它可能只是我的印象,但协议缓冲区似乎有一些较厚的抽象结构版本.Thrift确实有一些版本支持,但需要花费一些力气才能实现.
一个显而易见的事情是,无论是pro还是con(两者都相同)都是二进制协议.这允许更紧凑的表示和可能更多的性能(专业),但是具有降低的可读性(或者更确切地说,可调试性),con.
此外,两者都比标准格式(如xml(甚至可能是json))具有更少的工具支持.
(编辑)这是一个有趣的比较,解决了大小和性能差异,并包括一些其他格式(xml,json)的数字.
ProtocolBuffers更快.
这里有一个很好的基准:http:
//code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking
您可能还想了解Avro,因为Avro更快.
微软在这里提供了一个软件包:http:
//www.nuget.org/packages/Microsoft.Hadoop.Avro
顺便说一下,我见过的最快的是Cap'nProto ;
AC#实现可以在Marc Gravell的Github存储库中找到.
我认为这些观点中的大部分都忽略了一个基本事实,即 Thrift 是一个 RPC 框架,它恰好具有使用各种方法(二进制、XML 等)序列化数据的能力。
Protocol Buffers 纯粹是为序列化而设计的,它不是像 Thrift 这样的框架。
| 归档时间: |
|
| 查看次数: |
114388 次 |
| 最近记录: |