目录
序列化概念
首先我们先聊一下什么是序列化反序列化,相信在Linux网络编程中我们提到过http在接收或发送时都要先制定一个协议,这个协议是一个类或结构体,而我们将一个对象通过网络传输转成字节序的过程叫做序列化,反之则为反序列化。
什么情况下需要序列化与反序列化呢?
存储数据:当你想把的内存中的对象状态保存到⼀个⽂件中或者存到数据库中时。
⽹络传输:⽹络直接传输数据,但是⽆法直接传输对象,所以要在传输前序列化,传输完成后反
序列化成对象。例如我们之前学习过?socket?编程中发送与接收数据。
而在Linux网络编程中,我们使用了json库对我们收到或发送的请求应答进行序列化或反序列化。但是在序列化时不仅仅只有json可以进行操作,还有xml、protobuf。
ProtoBuf是什么
Protocol?Buffers?是?Google?的⼀种语⾔⽆关、平台⽆关、可扩展的序列化结构数据的⽅法,它可⽤于(数据)通信协议、数据存储等。
Protocol Buffers类⽐于XML,是⼀种灵活,⾼效,⾃动化机制的结构数据序列化⽅法,但是比XML更⼩、更快、更为简单。
你可以定义数据的结构,然后使⽤特殊⽣成的源代码轻松的在各种数据流中使⽤各种语⾔进⾏编写和读取结构数据。你甚⾄可以更新数据结构,⽽不破坏由旧数据结构编译的已部署程序。
用通俗的话来说:是一种与能让结构数据进行序列化的一种方法。
protobuf本身具有的特点:
语⾔⽆关、平台⽆关:即?ProtoBuf?⽀持?Java、C++、Python?等多种语⾔,⽀持多个平台。?
⾼效:即⽐?XML?更⼩、更快、更为简单。
扩展性、兼容性好:你可以更新数据结构,⽽不影响和破坏原有的旧程序。
protobuf的使用特点: