硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

Microsoft 开源跨平台的序列化库——Bond

  • 2015-02-12
  • 本文字数:866 字

    阅读完需:约 3 分钟

上个月 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 容器,但是用户能够很容易地映射自定义的类型——在一个生成的 C++ 结构体中使用 Python 的 boost::multi 索引容器或者在一个生成的 C++ 类中将一个 unit64 模式域映射为一个 System.DateTime 域。Bond 生成的 C++ 结构体还能使用自定义的分配器。

Stack Overflow 上的一个帖子对 Bond 和 Google Protocol Buffers 做了一个非常好的比较:

优点:

  • 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 可以成为一个非常有用的候选方案。

2015-02-12 09:214768
用户头像

发布了 321 篇内容, 共 131.3 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

《转》什么是跨域?如何解决跨域问题?

hasWhere

【虚拟机专栏】Rust智能合约的应用

趣链科技

区块链 智能合约 虚拟机

fil挖矿gas费怎么看?fil挖矿需要质押多少?

fil挖矿需要质押多少 fil挖矿gas费怎么看

重磅!博睿数据通过CMMI5级评估,国内APM领域首家

博睿数据

【HTML5游戏】从敲打空格键开始

devpoint

HTML5游戏 9月日更

OCR加持白描App,让AI成为视障者的眼睛

百度开发者中心

人工智能 最佳实践 方法论 前沿技术

数字人民币最新技术成果将亮相2021年服贸会

CECBC

财经大课:如何看待规模化与差异化竞争

石云升

财经思维 9月日更

北鲲云超算平台如何帮助现代生物制药发展?

北鲲云

Java + opencv 实现图片修复(图片去水印)

张音乐

Java OpenCV 音视频 9月日更 图片去水印

fil挖矿机靠谱吗?fil挖矿哪家靠谱?

fil挖矿哪家靠谱 fil挖矿机靠谱吗

AJAX获取的日期相差8小时

hasWhere

🐦【Mybatis开发指南】如何清晰的解决出现「多对一模型」和「一对多模型」的问题

码界西柚

Java mybatis mybatis配置 9月日更

2021年广播电视网络安全等级保护定级流程

行云管家

运维 等保测评 企业运维 广播电视

国产接口管理工具ApiPost中的COOKIE管理器

Proud lion

大前端 后端 Postman 开发工具 Cookie

看云起云动 览开源盛世 | 亚马逊云科技中国峰会Dev Day线上来袭!

亚马逊云科技 (Amazon Web Services)

网络攻防学习笔记 Day124

穿过生命散发芬芳

9月日更 互联网安全

企业有运维人员,还有必要买运维管理系统吗?

行云管家

企业运维 运维审计 运维系统

鸿蒙轻内核的得力助手:带你掌握4种内存调试方法

华为云开发者联盟

鸿蒙

洞穿性能测试痛点,PerfDog以提升应用和游戏的品质为使命

WeTest

AISWare AntDB 亚信数据库在多省份计费系统应用案例

亚信AntDB数据库

案例分享 #数据库 9月日更

以两军问题为背景来演绎BasicPaxos

OpenIM

揭秘版权保护下的视频隐形水印算法(下篇)

拍乐云Pano

音视频 RTC 拍乐云 隐形水印

InfoQ 引航计划正式启动!全网最优质技术内容,拿来吧你!

InfoQ写作社区官方

引航计划 技术专题合集 热门活动

kubebuilder 构建控制器说明点

Geek_f24c45

Kubernetes kubebuilder kube-controller

数据结构和算法在流程画布中的实际应用

GrowingIO技术专栏

数据结构 G6 图可视化引擎 流程画布

7个非常有前景的C++专业就业方向

hanaper

直播访谈-数据产品修炼之路

第519区

数据产品经理

数据安全法真的来了,这6个“雷区”千万别踩!

腾讯安全云鼎实验室

数据安全 数据安全法

“人类先锋”点亮物联网灯塔

脑极体

MySQL 获取表的信息

玄兴梦影

MySQL 数据库表 查询语句

Microsoft开源跨平台的序列化库——Bond_微软_Boris Lublinsky_InfoQ精选文章