gpt4 book ai didi

serialization - Microsoft 的 Bond 和 Google 的 Protocol Buffers 之间的区别

转载 作者:行者123 更新时间:2023-12-03 10:59:30 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

7年前关闭。




Improve this question




近期(2015年1月)微软开源Bond ,他们用于处理模式化数据的框架。在许多方面它类似于 Google 的 Protocol Buffers .

两者最大的区别是什么?有什么优点和缺点,也就是说,在哪些情况下我想使用一种,而不是另一种?当然,我不是在谈论明显的事情,比如与其他项目的一致性或已经存在的 API,而是两个库的特性。举个例子,邦德有 bonded<T> 如果我没记错的话,它在 Protocol Buffers 中没有对应物。

最佳答案

总的来说,Bond 有更好的类型系统,支持多种协议(protocol)。

特别是,优点是:

  • Bond 支持泛型
  • Bond 有不同的类型来表示集合:vector<T> , map<T> , list<T>
  • Bond 支持类型安全的惰性反序列化 ( bonded<T> )
  • Bond 支持多种格式(快速二进制、紧凑二进制、XML、JSON)+ 编码和转码

  • 缺点:
  • Bond 不支持固定和可变整数编码的不同类型。在 Bond 中,整数的编码方式由输出格式(快速或紧凑)决定,但在 Protocol Buffers 中,整数类型始终具有固定大小:fixed32fixed64 .
  • Bond 不支持联合类型( Protocol Buffer 中的 oneof)

  • 我做了一些测试,看起来 Bond 和 ProtoBuf 二进制格式的简单消息的大小大致相同。我使用 Bond 和 C# ProtoBuf 库比较了序列化和反序列化时间:在我的例子中,Bond 表现得更好,你可以找到我的 source code on GitHub

    总而言之,我认为在处理一些复杂类型的数据或需要以不同格式表示相同数据时使用 Bond 更好:例如存储为二进制文件,但公开为 JSON 等。

    关于serialization - Microsoft 的 Bond 和 Google 的 Protocol Buffers 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27879239/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com