Protocol Buffers
1介绍编辑
概述
Protocol Buffers是
Google公司开发的一种
数据描述语言,类似于
XML能够将结构化数据序列化,可用于数据存储、
通信协议等方面。它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C++、JAVA、Python等三种编程语言,但可以找到大量的几乎涵盖所有语言的第三方拓展包。
通过它,你可以定义你的数据的结构,并生成基于各种语言的代码。这些你定义的数据流可以轻松地在传递并不破坏你已有的程序。并且你也可以更新这些数据而现有的程序也不会受到任何的影响。
Protocol Buffers经常被简称为protobuf。
样例
通过定义一些数据和结构放在一个 .proto 文件之中。每一个protocol buffer 信息都是一小段结构,包含了一些名字。下面是一个.proto 文件内容的样例。
[pre]message Point { required int32 x = 1; required int32 y = 2; optional string label = 3;} message Line { required Point start = 1; required Point end = 2; optional string label = 3;} message Polyline { repeated Point point = 1; optional string label = 2;}
2优点编辑
为什么不只用XML?
同XML相比,Protocol buffers在序列化结构化数据方面有许多优点:
1. 更简单
2. 数据描述文件只需原来的1/10至1/3
3. 解析速度是原来的20倍至100倍
4. 减少了二义性
5. 生成了更容易在
编程中使用的数据访问类
[1]
6、支持多种编程语言
举例
我们可以举出例子对这两者进行比较。
XML
<person>
<name>John Doe</name>
<email>jdoe@</email>
</person>
Protocol buffers
person { name: "John Doe" email: "jdoe@“ }
3应用编辑
Protocol Buffers在谷歌被广泛用于各种结构化信息存储和交换。Protocol Buffers作为一个自定义的
远程过程调用(RPC)系统,用于在谷歌几乎所有的设备间的通信。
[2]
google在2008年7月7号将其作为开源项目对外公布。
[1]