作者:瓶子 | 来源:互联网 | 2023-05-27 14:04
最近(2015年1月)微软开源债券,他们用于处理模式化数据的框架.在许多方面,它类似于谷歌的协议缓冲区.
这两者之间最大的区别是什么?什么是利弊,也就是说,在哪种情况下我想使用一种,而不是另一种情况?当然,我不是在谈论与其他项目或现有API的一致性等明显的事情,而是两个库的功能.举个例子,bonded
如果我没记错的话,Bond会在Protocol Buffers中没有对应的.
1> takemyoxygen..:
通常,Bond具有更好的类型系统并支持多种协议.
特别是,职业是:
邦德支持泛型
债券有不同的类型来表示集合:vector
,map
,list
Bond支持类型安全的懒惰反序列化(bonded
)
Bond支持多种格式(快速二进制,紧凑二进制,XML,JSON)+编组和转码
缺点:
Bond不支持固定和可变整数编码的不同类型.在Bond中,整数的编码方式由输出格式(快速或紧凑)决定,但在协议缓冲区中,有一些整数类型总是具有固定大小:fixed32
和fixed64
.
Bond不支持联合类型(oneof
在协议缓冲区中)
邦德没有Java实现(尚未)
我做了一些测试,看起来Bond和ProtoBuf二进制格式的简单消息的大小大致相同.我使用Bond和C#ProtoBuf库来比较序列化和反序列化时间:在我的情况下,Bond执行得更好,你可以在GitHub上找到我的源代码
总而言之,我认为在处理一些复杂类型的数据时或者当您需要以不同格式表示相同数据时最好使用Bond:例如存储为二进制文件,但是以JSON等形式公开.