序列化库 FlatBuffers
简介
https://github.com/google/flatbuffers
https://google.github.io/flatbuffers/index.html#flatbuffers_overview
FlatBuffers是Google发布的一个高效的跨平台的序列化库,支持多种编程语言。
Google最初是将其用于游戏开发和其他对性能要求比较高的场合。
FlatBuffers与普通序列化方案的区别:
一般序列化通常采用以下步骤:将数据结构序列化为JSON、XML、二进制或其他格式的数据流,然后接收方或使用方将数据流再解析为数据结构。
以C++为例,FlatBuffers的步骤是:
- 编写Schema文件(schema file),即使用接口定义语言(IDL)定义数据结构
- 使用flatc编译器编译Schema文件,生成C++文件
- 将生成的C++文件添加到项目中一起编译
- 使用生成的C++文件提供的接口序列化/反序列化数据
C++例子
编写Schema文件
文件monster.fbs
1 | // Example IDL file for our monster's schema. |
编写Schema文件的教程
https://google.github.io/flatbuffers/flatbuffers_guide_writing_schema.html
编译Schema文件
1 | cd flatbuffers/samples |
使用
序列化,写FlatBuffers
1 |
|
反序列化,读FlatBuffers
1 | #include "monster_generated.h" // This was generated by `flatc`. |
扩展阅读
https://zhuanlan.zhihu.com/p/77644854
http://www.voidcn.com/article/p-xtbacuzn-bqm.html
https://blog.csdn.net/qq_35559358/article/details/79443327