最近(2015年1月)Microsoft开源Bond,它们用于处理模式化数据的框架。在许多方面,它类似于Google的Protocol Buffers。
两者之间最大的区别是什么?什么是利弊,也就是说,在哪种情况下我想使用一种,而不是另一种情况?当然,我并不是在谈论与其他项目或现有API的一致性等明显的事情,而是两个库的功能。举个例子,Bond有bonded<T>
,如果我没记错的话,它在协议缓冲区中没有对应物。
答案 0 :(得分:29)
一般来说,邦德有更好的类型系统并支持多种协议。
特别是,职业选手是:
vector<T>
,map<T>
,list<T>
bonded<T>
)缺点:
fixed32
和fixed64
。oneof
)我做了一些测试,看起来Bond和ProtoBuf二进制格式的简单消息大小差不多。我使用Bond和C#ProtoBuf库来比较序列化和反序列化时间:在我的情况下,Bond表现得更好,你可以找到我的source code on GitHub
总而言之,我认为在处理一些复杂类型的数据时或者当您需要以不同格式表示相同数据时,最好使用Bond:存储为二进制文件,但以JSON等方式公开。