protocal buffer 是google开发的处理结构化数据的工具(拥有多种属性的数据)
如
name: sanwang
id:12345
email: sanwang@126.com
当需要将这些结构化的数据持久化或进行网络传输时,需要将其序列化,所谓序列化指将结构化数据变为数据流的格式,简单来说就是转变为字符串。如何讲结构化的数据序列化,并将序列化的数据还原出原来的结构化数据,统称为处理结构化数据,这就是protocal buffer要解决的问题
除了protocal buffer以外,xml和json同样是处理结构化数据的工具,
xml
<user>
<name>sanzhang</name>
<id>12345</id>
<email>sanzhang@126.com</email>
</user>
json
{
"name":"sanzhang",
"id": 12345,
"email":sanzhang@126.com,
}
protocal buffer 和两者的区别在于,首先序列化后得到的数据不是字符串而是二进制流,其次 xml和json的数据信息都包含在了序列化后的数据中, 不需要任何其他信息就可以还原数据。但protocal buffer 需要先定义数据格式schema,还原序列化数据时需要用到定义好的数据格式。 其序列化后的数据要比其他两种小
message user{
optional string user =1,
required int32 id =2,
repreated string email =3,}