数据序列化工具——flatbuffer
flatbuffer是一款类似于protobuf的数据序列化工具。所有数据序列化,简单来说,就是将某程数据结构按照一定的格式进行编码与解码,以方便在不同的进程间传递后,能够正确的还原成之前的数据结构。
flatbuffer大体上的用法与protobuf是类似的。所不同的是,它支持union定义,并可以通过as方法来简单的将由union包裹的数据进行类型转换,省去了一些麻烦。另外,它使用offset形式进行数据存储,从理论上来说,可以加快访问速度。(有待验证)
一个示例:
namespace com.cnblogs; enum RequestType: byte { RequestDataA = 0,
RequestDataB } table RequestDataA { setting: bool; }
table RequestDataB {
setting: bool;
}
union RequestDataField {
RequestDataA,
RequestDataB
}
table Request {
type: RequestType;
message: RequestDataField;
}
root_type Request;
如上的结构,就可以通过type成员和as方法来简单的进行request的类型区别与转换。
资料参考:
[中文]
https://www.cnblogs.com/hgwang/p/9964151.html
https://www.cnblogs.com/frankwt/p/12943924.html
[英文]
https://google.github.io/flatbuffers/