产品战略专家梁宁确认出席AICon北京站,分享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:214251
用户头像

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

关注

评论

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

吹爆!阿里高工携18位架构师耗时57天整合的1658页面试总结太香了

Java 编程 程序员 架构 面试

阿里巨擎耗时六个月整理的这套图解HTTP笔记,在Github上被疯狂转载!

Java 架构 面试 程序人生 编程语言

【浪潮云说】直播间第九期今晚20:00准时开播

云计算

绝了!Java程序员面试全方位贴身指南,轻松跳槽获取高薪资offer

程序员 架构 面试 后端 java

好家伙!华为内部Java系统优化笔记一夜之间跃居Github热榜第二

Java 架构 IT 计算机 知识分享

Java集合核心内容之葵花宝面,搞定90%以上的技术面!建议收藏

程序员小呆

Java 程序员 架构师

英特尔举办第十四届物联网峰会,携手中国生态伙伴迈向融合边缘新时代

科技新消息

惊了!网易架构大牛熬夜手敲千页网络协议笔记,竟在Github上标星百万!

Java 架构 面试 程序人生 编程语言

保持高效学习的 7 个方法

Phoenix

学习方法

Python代码阅读(第36篇):列表偏移

Felix

Python 编程 Code Programing 阅读代码

智能化如何升级传统厨房烹饪体验?苏泊尔与鸿蒙智联携手交出创新答卷

科技汇

真香!肝完Alibaba这份面试通关宝典,我成功拿下今年第15个Offer

Java 编程 程序员 IT 计算机

Qcon 免费报名 | 融云「实时通信技术专场」议题抢鲜看

融云 RongCloud

开发者 通信云 场景化

网易云信 NERTC 高清画质体验之 H.265的工程实践 | 体验共享技术专题

网易云信

Java 测试 音视频 视频

Linux服务器部署服务

黄敏

Angular 依赖注入 - 全面解析

PingCode研发中心

angular 依赖注入 对象提供者 注入器 令牌

Spring Boot 这样的优化,让你的项目飞起来

程序员小呆

Java 程序员 架构师

EMQ X VS RabbitMQ:两大消息服务器 MQTT 性能对比全解(下)

EMQ映云科技

RabbitMQ 物联网 IoT mqtt emq

J2PaaS 低代码平台,正式发布开源版!

J2PaaS低代码平台

低代码 零代码 低代码开发 低代码开发平台 无代码平台

2.两数相加(链表)

黄敏

拒绝焦虑!Alibaba巨擎随手甩来的一本Java性能优化让我收获满满

Java 架构 面试 程序人生 编程语言

动态模型之增压暂停【FunTester测试框架】

FunTester

性能测试 接口测试 测试框架 FunTester 动态模型

自定义View:文字的测量与绘制

Changing Lin

10月月更

EDA 事件驱动架构与 EventBridge 二三事

阿里巴巴云原生

阿里云 云原生 EDA架构 事件驱动型架构

30天肝出来的Java面试手册!登顶Github标星288k

Java 程序员 架构 面试 后端

秋招如何抱佛脚?2021最新大厂Java面试真题合集(附权威答案)

Java 编程 程序员 架构 IT

“他”靠这份GitHub star过万的1121页图解算法成功杀进字节跳动

Java 编程 程序员 IT 计算机

【直播回顾】5步实现精细化用户触达,助力业务增长

极光JIGUANG

消息推送 用户触达

2021云栖大会丨果断收藏!「混合云参会指南」来啦~

人工智能 阿里云 互联网 云栖大会 前沿科技

递推算法与递推套路(算法基础篇)

有道技术团队

算法 大前端 网易有道

音视频编解码 -- 编码参数 CRF

声网

ffmpeg 视频编解码 视频压缩 CRF

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