协议缓冲和扁平缓冲器有什么区别?

两者都是由 Google 开发人员开发的序列化库。他们之间有什么很大的区别吗?将使用 协议缓冲的代码转换为使用 FlatBuffers的代码是否需要很多工作?

59281 次浏览

我在这里详细比较了一些序列化系统,包括 Protobufs 和 FlatBuffers:

Https://kentonv.github.io/capnproto/news/2014-06-17-capnproto-flatbuffers-sbe.html

然而,比较的重点更多的是比较三种新的“零拷贝”序列化系统,并且主要包括 Protobufs 作为参考点。另外,我是 Cap’n Proto 的作者,也是 Protobufs v2的作者(我在 Google 负责 Protobufs 的开源) ,所以这个比较可能有偏见。

(2021年更新:)请注意,Protobufs 早在2001年左右就被引入谷歌,至今仍是谷歌的“通用语言”。FlatBuffers 于2014年推出,在一些项目中使用,但 Protobuf 仍然是谷歌的主要数据交换格式,并且无意改变这一点。公平地说,谷歌可能无法改变这一点,如果他们想,只是有太多的代码。