初识Protobuf
文章目录
- 1.序列化的概念
- 2. 什么是Protobuf
- 3. PB 的特点
- 4.PB的使用特点
1.序列化的概念
序列化:把对象转换为字节序列的过程
反序列化:把字节序列恢复成对象的过程
什么时候需要序列化?
- 把内存中的对象保存到文件或数据库中时
- 网络传输数据,无法直接传输对象,先把对象序列化,传输后反序列化成对象。
如何实现?
JSON、XML、ProtoBuf
常见场景:
序列化:声音信号–》光、电信号; 对象–》二进制序列;
反序列化:光、电信号–》声音;二进制序列—》对象
2. 什么是Protobuf
protobuf是将结构化的数据进行序列化的一种方式
3. PB 的特点
- 语言无关、平台无关:支持Java、C++、python等多种语言
- 高效:比XML、json更小更快更简单
- 扩展性、兼容性好:可以更新数据结构而不影响和破坏原有的旧程序
4.PB的使用特点
- 编写 .proto 文件,目的是为了定义结构对象(message)及属性内容。
- 使用 protoc 编译器编译 .proto 文件,生成一系列接口代码,存放在新生成头文件和源文件中。
- 依赖生成的接口,将编译生成的头文件包含进我们的代码中,实现对 .proto 文件中定义的字段进行设置和获取,和对 message 对象进行序列化和反序列化。
总的来说:ProtoBuf 是需要依赖通过编译生成的头文件和源文件来使用的。
就是说protobuf不能直接被我们的业务代码使用,而是先通过编译工具(protoc)处理.proto文件(手动编写.proto文件,定义需要处理的数据结构),生成特定的头文件、源文件后,业务代码再包含这些生成的文件,然后就能调用生成文件中的方法实现序列化/反序列化 。