微軟的開源數據格式化框架Bond
Bond 是一個跨平臺(目前支持 Linux、OS X 和 Windows)的數據格式化框架,支持跨語言(C++、 C#和 Python)的序列化和解序列化,與 Protocol Buffers、Thrift 和 Avro 類似。已在微軟內部用于一些大規模的服務。
Bond 的主要作者是微軟主任軟件工程師 Adam Sapek,來自波蘭,自 2001 年一直效力于微軟。之前他曾經負責設計 P2P 協議 BitSwarm。
Sapek 自己在 Hacker News 中透露,Bond 比較引人注目的是其核心部分包括編譯器和代碼生成器是用函數式語言 Haskell 開發的。
根據官方文檔,Bond 的特點主要是:
- 類型系統非常豐富,引入了繼承、類型別名和泛型。這方面與 Apache Thrift 比較類似。但缺乏 Avro 和 Protocol Buffers 支持的聯合類型,這是通過可選字段的 schema 來表示的。
- 編程模型也更接近 Thrift,生成原生類型,用目標語言和原生集合表示 schema,但是 Bond 不會硬編碼類型映射,更加靈活。
- 協議方面,Bond 支持三類:Tagged binary protocol(類似于 Thrift 的 protocol 和 Protocol Buffers 的 wire format,用于 PRC 場景)、untagged protocol(類似 Avro wire format,載荷是壓縮的,用于數據存儲場景)、文本協議如 JSON 和 XML。協議是可插拔的,盡可能地通過泛型來實現,因此沒有性能開銷。 -架構上,Bond 比較獨特的地方是序列化和解序列化都不是硬編碼在所生成的代碼中的基本操作,用戶可以使用元編程技術編寫分析器和變換,因此非常靈活。 </ol>
有意思的是,類似的框架除了 ProtoBuf、Thrift 和 Avro 之外,還有 MessagePack、Google 新推的 FlatBuffers、Martin Thompson 的 SBE 和 ProtoBuf 負責人 Kenton Varda(Google 拜 Jeff Dean 教也是他創立的)創業后開發的 Cap'n Proto(號稱提速無限倍)。
這些項目背后的開發者實力都很強,它們之間的選擇,可成了一個課題了。之前 Varda 曾經寫過一篇文章比較幾個新一點的方案,可供參考。此外維基百科也有專門的條目:http://en.wikipedia.org/wiki/Comparison_of_data_serialization_formats。
來自: www.iteye.com
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!