阅读更多

0顶
0踩

开源软件

原创新闻 微软的开源数据格式化框架Bond

2015-04-08 09:22 by 副主编 mengyidan1988 评论(0) 有5675人浏览
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比较独特的地方是序列化和解序列化都不是硬编码在所生成的代码中的基本操作,用户可以使用元编程技术编写分析器和变换,因此非常灵活。

Hacker News上的两次讨论:1,2

有意思的是,类似的框架除了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
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • .Net开源框架列表

    框架 NancyFx:轻量、用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台。官网 ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设备。...

  • .Net开源框架列表【转载】

    框架 NancyFx:轻量、用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台。官网 ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设备。...

  • vcpkgC++开源项目1

    vcpkgC++开源项目1

  • .net 开源项目

    API框架NancyFx:轻量、用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台。ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设备。...

  • .NET方面的框架的整理和总结

    自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在...Microsoft Velocity:微软自家分布式缓存服务框架。 Memcahed:一套分布式的高...

  • .NET开源项目

    框架 NancyFx:轻量、用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台。 ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设备...

  • .net 框架

    应用框架(Application Frameworks) 应用模板(Application Templates) 人工智能(Artificial Intelligence) 程序集处理(Assembly Manipulation) 资源(Assets) 认证和授权(Authentication and ...

  • GIT开源优秀项目

    (注:下面用 [$] 标注的表示收费工具,但部分收费工具针对开源软件的开发/部署/托管是免费的) 目录 API 应用框架(Application Frameworks) 应用模板(Application Templates) 人工智能(Artificial ...

  • .NET平台框架整理(1)

    框架 NancyFx:轻量、用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台。官网 ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设备。...

  • 一些.NET的开源项目资料

    框架 NancyFx:轻量、用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台。 ASP.NET WebAPI:快捷创建 HTTP 服务的框架,可以广泛用于多种不同的客户端,包括浏览器和移动设...

  • .Net 开源项目资源大全

    Awesome DotNet,这又是一个 ...内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等。 伯乐在线已在 GitHub 上发起「DotNet 资源大全中文版」的整理。欢迎扩散、欢迎加入。 ...

  • pyzmq-23.2.1-cp310-cp310-musllinux_1_1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • springboot769旅游管理系统.mp4

    项目运行视频

  • 数据库的阿萨德概述.txt

    数据库的阿萨德概述.txt

  • grpcio-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • 最专业的devops工程师学习路径,无论是专业devops,还是IT小白,都值得拥有

    成为一名专业的DevOps工程师是一个持续学习和实践的过程。无论您是专业DevOps工程师还是IT小白,以下学习路径都是值得拥有的: ### 初学者阶段 1. **编程基础**:学习至少一种编程语言,如Python或Shell脚本编写,这将帮助您自动化任务和编写工具。 2. **操作系统和网络基础**:理解Linux系统和网络基础,这对于配置和管理服务器至关重要。 3. **版本控制**:掌握Git,这是现代软件开发中不可或缺的工具。 4. **CI/CD工具**:熟悉Jenkins或GitLab CI等工具,以实现持续集成和持续部署。 5. **容器技术**:学习Docker和Kubernetes,以实现应用的容器化和编排。 6. **云服务**:了解AWS、Azure或Google Cloud Platform等云服务的基本操作。

  • v8390966-xhs-Guanfang_X64.apk

    v8390966-xhs-Guanfang_X64.apk

  • stream.x64.x-none.rarstream.x64.x-none.rarstream.x64.x-none.rars

    stream.x64.x-none.rarstream.x64.x-none.rarstream.x64.x-none.rars

  • springboot751的社区维修平台.mp4

    项目运行视频

Global site tag (gtag.js) - Google Analytics