结构化数据是为了方便传输和存储:传输接收方能解析出发送方发送的数据,存储读取者可以解析出写入者写入的数据
目前结构化数据协议主要有json,xml,tlv,protobuf等。
对比分析如下:
(todo:此处暂时缺个表)
它们分别长这样:
1. json:
{ "student":[ { "name":"张三", "age":"30", "sex":"男" } { "name":"李四", "age":"25", "sex":"男" } { "name":"王五", "age":"27", "sex":"女" } ] }
2. xml:
<?xml version="1.0" encoding="utf-8"?>
<students>
<student>
<name>张三</name>
<age>30</age>
<sex>男</sex>
</student>
<student>
<name>李四</name>
<age>25</age>
<sex>男</sex>
</student>
<student>
<name>王五</name>
<age>27</age>
<sex>女</sex>
</student>
</students>
3. tlv:
4. protobuf:
结构体数据
总结下:
1.json,xml差不多,可以一眼看到字段,好处是对用户比较友好,json11提供面向对象的编解码接口,处理比较方便,坏处是数据裸露可以被人轻易获取,如果通过网络传输,性能也存疑。一般调用restful接口携带json字段。写配置文件使用json或者xml格式。
2.TLV,适应网络传输,但是貌似没有成熟的编解码接口需要自己写,用的好不好看水平。
3.protobuf,谷歌提供工具生成代码,发送和接收两端需要维护同一份结构体字段。体积小,一般pcie传输使用。
4.还有一种是模板迭代器类型map表实现C++多个插件之间的数据传输,这种方式在自己模块的代码中使用最方便直接,但是同样需要注意get之前必须要set,此处多发崩溃问题。