在Web 2.0 时代,XML格式由于AJAX的风行以及RSS的普及而异军突起。不过随着Python和Ruby On
Rails的走红,以及各种API的发布,YAML,JSON也逐渐成名。此次,Google推出了Protocol
Buffers,是想让广大编程者方便地使用Google网络传输数据的格式。
什么是Protocol Buffers?
这是Protocol Buffers主页上的一段代码:
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 Buffers的作用,就是将以上格式的数据类型,自动生成Java, Python, and C++的代码,然后以下一系列代码就可以直接调用了:(C++中)
Person person;
person.set_name("John Doe");
person.set_id(1234);
person.set_email("jdoe@example.com");
fstream output("myfile", ios::out | ios::binary);
person.SerializeToOstream(&output); fstream input("myfile", ios::in | ios::binary);
Person person;
person.ParseFromIstream(&input);
cout << "Name: " << person.name() << endl;
cout << "E-mail: " << person.email() << endl;
相信所有C++编程者都为定义set,get之类的函数感到烦人过吧,而Google做的就是帮助你省去这些麻烦,构造更利于网络传输的数据结构。
与XML的比较 优势
更简单
比XML小3到10倍体积
比XML快20到100倍
更不容易引起歧义
自动生成可编程的类代码
比较:
cout << "Name: " << person.name() << endl;
cout << "E-mail: " << person.email() << endl;
cout << "Name: "
<< person.getElementsByTagName("name")->item(0)->innerText()
<< endl;
cout << "E-mail: "
<< person.getElementsByTagName("email")->item(0)->innerText()
<< endl; 劣势
没有层次,所以无法和HTML标记语言打交道
如果没有message的定义,根本无法知道message的意思,而XML是自解释型的。
Protocol Buffer主页
Protocol Buffer下载
原文地址:
Google推出Protocol Buffers:争夺网络时代数据格式
分享到:
相关推荐
**Google Protocol Buffers**,简称Protobuf,是Google开发的一种数据序列化协议,它能够将结构化的数据序列化,可用于数据存储、通信协议等方面。它提供了比XML更小、更快、更简单的替代方案,可以用于各种编程语言...
Protocol Buffers是谷歌推出的一种强大、高效的数据序列化工具,适用于跨平台、跨语言的数据交换。在Java开发中,它能提供简洁的API,帮助开发者轻松处理数据序列化和反序列化,提升应用的性能和可维护性。结合其对...
Google Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的...
Google.Protocol Buffers(简称protobuf)是由Google开发的一种数据序列化协议,它提供了一种高效、灵活且跨平台的方式来序列化结构化数据。Protocol Buffers类似于XML和JSON,但其效率更高,文件大小更小,且解析...
Protocol Buffers是Google开发的一种数据序列化协议,用于结构化数据的序列化,可以视为一种跨平台、跨语言的数据交换格式。它允许开发者定义数据结构,然后生成代码以轻松地在各种数据流之间读写这些数据。Protocol...
Google uses Protocol Buffers for almost all of its internal RPC protocols and file formats. Latest Updates http://protobuf.googlecode.com/svn/trunk/CHANGES.txt Documentation Read the documentation....
Google.ProtocolBuffers.dll类库
Protocol Buffers 2.4.1 jar
中文翻译Google Protocol Buffers中文教程中文翻译Google Protocol Buffers中文教程中文翻译Google Protocol Buffers中文教程中文翻译Google Protocol Buffers中文教程
同时,Protocol Buffers也可以用于解决网络传递数据的问题,例如在系统之间传递数据时,可以使用Protocol Buffers来定义和处理数据。 Protocol Buffers的优点还在于它可以与其他语言集成,例如Java、Python、C++等...
标题中的"ProtocolBuffers-2.2.0-Source (1).tar.gz"指的是谷歌的Protocol Buffers(简称protobuf)的2.2.0版本源代码压缩包,它以.tar.gz格式打包,这是一种常见的Linux和macOS下的文件压缩方式。这个压缩包可能是...
Protocol Buffers(简称protobuf)是由Google开发的一种数据序列化协议,它是一种高效、灵活且跨平台的通信数据格式。这个技术允许开发者定义数据结构,然后生成对应的编码和解码代码,使得应用程序可以方便地进行...
Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。现阶段支持C 、JAVA、Python等三种编程语言。 为什么不只...
将Protocol Buffers引入Objective-C,可以为iOS和macOS应用提供高效的数据交换格式,降低网络通信和数据持久化的复杂性。 在"Protocol Buffers for Objective C.zip"这个压缩包中,我们可以期待找到与在Objective-C...
* 高效:Protocol Buffers可以快速地序列化和反序列化数据,减少数据传输的时间和空间开销。 * 可扩展:Protocol Buffers支持扩展字段,允许用户自定义数据结构。 * 语言无关:Protocol Buffers可以在不同的语言中...
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现,如:java、c#、c++、javascript、go 、python、ruby和php等,每一种实现都包含了相应语言的...
Google Protocol Buffers浅析