使用教程见:http://www.cppblog.com/woaidongmao/archive/2009/06/23/88391.html
Protocol Buffers是在通信协议、数据存储等方面,用来序列化结构化数据,一种语言无关、平台无关、可扩展的解决方案。
这篇概论主要是介绍Protocol Buffers,并且告诉你,如果你要开始使用Protocol Buffers,需要做哪些事情。
1. 什么是Protocol Buffers
Protocol Buffers是一种易扩展、高效的、自动化的序列化结构化的数据的机制,比起XML来,它更小、更快、更简单。一旦你明确了你想要你的数据用什么结构,你就可以很容易用某种生成的源代码来读写你的结构化数据,可以是各种各样的数据流,也可以用在各种各样的语言中。你甚至可以更新你的数据结构,而不用重新部署你用“老”的数据格式编译的程序。
2. Protocol Buffers是怎样工作的?
你可以通过在.proto文件里面用Protocol Buffers消息类型进行定义,来让你准备序列化的信息如何结构化。每一个Protocol Buffers消息是信息的一条小的逻辑记录,里面包含一系列名称-值对。下面我们来看一个非常简单的.proto文件,这个文件定义了一个人的信息。
- message Person {
- required string name = 1;
- required int32 id = 2;
- optional string email = 3;
- enum PhoneType {
- MOBILE = 0;
- HOME = 1;
- WORK = 2;
- }
- message PhoneNumber {
- required string number = 1;
- optional PhoneType type = 2 [default = HOME];
- }
- repeated PhoneNumber phone = 4;
- }
message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; }
正如你看到的,消息格式非常简单,每个消息类型都有一个或者多个唯一的有限域,每个域都有一个名称和值类型,值类型可以是数字(整数或者浮点数)、布尔值、字符串、连续字节,甚至可以是其他的Protocol Buf