1、什么是序列化
- 序列化:将对象转换为字节序列的过程
- 反序列化:将字节序列恢复为对象的过程
2、为什么需要序列化
下面举两个例子:
- 存储数据:当你想把的内存中的对象状态保存到⼀个⽂件中或者存到数据库中时,就需要进行序列化操作。
- 网络传输:网络可以直接传输数据,但是⽆法直接传输对象,所以要在传输前序列化,传输完成后反序列化成对象,例如我们之前学习过
socket编程中发送与接收数据。
3、如何实现序列化
JsonXMLProtoBuf
Ⅱ. 什么是ProtoBuf
从官方得到的解释是这样子的:
Protocol Buffers是Google的⼀种语言无关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤于(数据)通信协议、数据存储等。Protocol Buffers类⽐于XML,是⼀种灵活,⾼效,⾃动化机制的结构数据序列化⽅法,但是⽐XML更⼩、更快、更为简单。- 你可以定义数据的结构,然后使⽤特殊⽣成的源代码轻松的在各种数据流中使⽤各种语⾔进⾏编写和读取结构数据。你甚⾄可以更新数据结构,⽽不破坏由旧数据结构编译的已部署程序。
简单来讲, **ProtoBuf**是让结构数据序列化的方法,其具有以下特点:
- 语言无关、平台无关:即
ProtoBuf⽀持Java、C++、Python等多种语⾔,⽀持多个平台。 - 高效:即⽐
XML更⼩、更快、更为简单。 - 扩展性、兼容性好:你可以更新数据结构,⽽不影响和破坏原有的旧程序。
Ⅲ. ProtoBuf的使用特点
- 编写
.proto⽂件,⽬的是为了定义结构对象(message)及属性内容。 - 使⽤
protoc编译器编译.proto⽂件,⽣成⼀系列接⼝代码,存放在新⽣成的头⽂件和源⽂件中。 - 依赖⽣成的接⼝,将编译⽣成的头⽂件包含进我们的代码中,实现对
.proto⽂件中定义的字段进⾏设置和获取,和对message对象进⾏序列化和反序列化。

简单的说:ProtoBuf 是需要依赖通过编译生成的头文件和源文件来使用的。有了这种代码生成机制,开发人员再也不用吭哧吭哧地编写那些协议解析的代码了!