Microsoft开源跨平台的连串化库——Bond

上个月Microsoft开源了Bond,三个跨平台的情势化数据处理框架。Bond援助跨语言的类别化/反系列化,协理有力的泛型机制能够对数码进行实用地拍卖。该框架在Microsoft公司之中的高扩充服务中收获了大规模的施用。近年来该类型曾经根据宽松的MIT许可开源在了GitHub上,当前版本扶助C++、C#和Python,可运维在Linux、OS-X和Windows平台上。Bond的编写翻译器完全是接纳Haskell编写的。

Bond与其它系列化系统具备许多相似性,例如Google Protocol
Buffers
Thrift以及Avro

  • Bond使用IDL风格的语言定义音信 
  • 它会将富有的Bond数据类型映射到地点语言数据类型

不过Bond的贯彻有二个不小的例外:它并没有硬编码类型映射。用户能够以插件的办法定制主题框架结构逻辑之外的始末——是从Bond格局或许从自定义的项目种类化、有线格式是怎样、是不是将自定义元数据放到有效载荷中等等。例如,在C++中暗中认可是std::vector那样的STL容器,可是用户能够很不难地映射自定义的连串——在2个转移的C++结构体中动用Python的boost::multi索引容器可能在三个生成的C++类中将一个unit64情势域映射为叁个System.DateTime域。Bond生成的C++结构体仍是能够采取自定义的分配器。

Stack
Overflow上的贰个帖子对Bond和谷歌Protocol Buffers做了3个尤其好的相比较:

优点:

  • Bond扶助泛型 
  • Bond有差异的品种用于表示集合:vector, map, list 
  • Bond帮助项目安全的惰性反种类化(bonded) 
  • Bond扶助各类格式(连忙二进制、紧密二进制、XML和JSON)以及封送与转码

缺点:

  • Bond不支持区别品种的永恒、可变整数编码。在Bond中整数怎么着编码是由输出格式(急速二进制依旧紧密二进制)决定的,不过在Protocol
    Buffers中整数类型始终有固定的大大小小:fixed32和fixed64。
  • Bond不支持union类型 (Protocol Buffers支持)
  • Bond并没有Java实现

另外,在这个Reddit的公告中有众多与Bond的达成和能力有关的答案。

设想到前日正值有进一步多的人以微服务的格局利用SOA,数据编组/解组的题材变得愈加主要。对于已有个别连串化系统而言,Bond能够改为四个百般管用的候选方案。

相关文章