目录
序列化定义:
就是将对象的状态信息转换为可以存储或传输的形式的过程,说白了,就是将对象以值的形式进行转换成可以存储或者传输的方式。
为什么需要进行序列化?
在不同的进程之间可能会需要进行对象的传递,为了解决在跨平台和跨语言的情况下,模块之间的交互和调用,其实就是为了解决数据传输问题。序列化的目的不是为了加密,而是为了数据的跨平台传输。
序列化的过程
发送端:
原始数据->序列化(编码)->特殊格式的字符串
发送字符串
接收端:
接受数据
特殊格式的字符串->反序列化(解码)->原始数据
对原始数据进行处理
c++中常见的序列化方式
(1)google protobuf
(2)json,其本质是采用“键值对”的方式来描述对象,相对于xml而言,序列化后的数据更加简洁,而且其协议比较简单,解析速度比较快。
(3)xml,具有跨机器,跨语言等特点,当这种标记文档的设计被用来序列化对象的时候,就显得冗长而复杂。
其中后两种的序列化之后的数据都比较大,而protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,详情访问protobuf的google官方网站。
protobuf在google中是一个比较核心的基础库,作为分布式运算涉及到大量的不同业务消息的传递,如何高效简洁的表示、操作这些业务消息在google这样的大规模应用中是至关重要的。而protobuf这样的库正好是在效率、数据大小、易用性之间取得了很好的平衡。
protobuf的优点:
(1)灵活(方便接口更新)、高效(效率经过google的优化,传输效率比普通的XML等高很多);
(2)易于使用;开发人员通过按照一定的语法定义结构化的消息格式&#x