NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:214076
用户头像

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

关注

评论

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

无缝融入 Kubernetes 生态 | 云原生网关支持 Ingress 资源

阿里巴巴云原生

什么是FAQ?如何编写FAQ文档?

小炮

技术解读:英特尔 x86 平台上,AI 能力是如何进行演进的?(附PPT)

OpenAnolis小助手

人工智能 X86 intel 自然语言模型

Linux之scp命令

入门小站

Linux

如何写好一篇技术文章

Hockor

写文章

NextRPC : RPC多段返回的创新和探索

阿里巴巴终端技术

RPC 客户端

消息复杂计算的抽象和简化

阿里巴巴终端技术

数据处理 客户端 消息

网络协议之:socket协议详解之Datagram Socket

程序那些事

socket 网络协议 udp 程序那些事 3月月更

基于微信小程序的运动场馆预约小程序开发笔记

CC同学

TDesign 更新周报(2022年3月第2周)

TDesign

网络安全 kali web安全【渗透测试】目录遍历漏洞

学神来啦

网络安全 渗透测试 WEB安全 kali kali Linux

网易数帆云原生日志平台架构实践

网易数帆

云原生 网易

从旁观者到贡献者:经历 OpenYurt 的“开源之夏”,我们想让更多人体验社区的魅力

阿里巴巴云原生

Hoo虎符研究院|区块链简报20220314期

区块链前沿News

Hoo 虎符交易所

【CAD】系列Ⅰ

謓泽

3月月更

使用Rust的几点理由,加入我们,一起学习!

非凸科技

Apache ShenYu源码阅读系列-Agent模块源码分析

子夜2104

数字化时代,银行如何建设管理小程序平台促进线上金融业务发展?

FinClip

小程序 银行

2021年券商APP盘点:用户规模大幅度增长,智能炒股成为行业标配

易观分析

券商

业务驱动的全景监控体系在阿里的应用 | 阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里云 DevOps 云原生 云端开发

小程序插件提升APP使用体验

Speedoooo

敏捷开发 APP开发 app性能 容器平台 小程序插件

程序员有了这些工具,还用加班吗

刘祥

Tech Talk 活动预告 | 送走 CentOS Linux 8,开发者们该如何保持 Linux 的采用途径?

亚马逊云科技 (Amazon Web Services)

开发者

如何选择最优路径完成云原生上云?听这场阿里云特别分享【云原生技术与最佳实践】

阿里巴巴云原生

免费机器资源、硬核导师、丰厚奖励|OpenI启智社区联合主办的飞桨黑客马拉松第二期开始啦~

OpenI启智社区

在线上传图片二维码识别解析

入门小站

工具

明道云2022年春季校园招聘启动啦!

明道云

云图说|DRS数据对比——带您随时观测数据一致性

华为云开发者联盟

数据一致性 DRS 数据复制 数据迁移

5G和Wi-Fi市场与技术的一些思考系列之一

李伟-晨泳

Mac应用打开小程序的技术解决方案

Speedoooo

微信小程序 智能设备 Windows 应用打开小程序 Mac应用打开小程序 电脑运行微信小程序

ICT的圣杯(一):人形电脑天使心

脑极体

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