Protocol Buffers和Flatbuffers之间有什么区别?

这两个都是序列化库,由Google开发者开发。 他们之间有什么大的区别? 将协议缓冲区中的代码转换为FlatBuffers是一件艰辛的工作?

我在这里写了几个序列化系统的详细比较,包括Protobufs和FlatBuffers:

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

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

请注意,Protobufs在整个Google自己的服务中使用,而FlatBuffers更多的是一个实验项目,据我所知它还没有被广泛采用。