`
ranfow
  • 浏览: 29668 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Google推出Protocol Buffers:争夺网络时代数据格式

    博客分类:
  • Web
阅读更多

在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

      **Google Protocol Buffers**,简称Protobuf,是Google开发的一种数据序列化协议,它能够将结构化的数据序列化,可用于数据存储、通信协议等方面。它提供了比XML更小、更快、更简单的替代方案,可以用于各种编程语言...

      ProtocolBuffers-谷歌的数据交换格式

      Protocol Buffers是谷歌推出的一种强大、高效的数据序列化工具,适用于跨平台、跨语言的数据交换。在Java开发中,它能提供简洁的API,帮助开发者轻松处理数据序列化和反序列化,提升应用的性能和可维护性。结合其对...

      Google.ProtocolBuffers.2.4.1.555

      Google Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的...

      Google.ProtocolBuffers

      Google.Protocol Buffers(简称protobuf)是由Google开发的一种数据序列化协议,它提供了一种高效、灵活且跨平台的方式来序列化结构化数据。Protocol Buffers类似于XML和JSON,但其效率更高,文件大小更小,且解析...

      protocol buffers 官网中文教程

      Protocol Buffers是Google开发的一种数据序列化协议,用于结构化数据的序列化,可以视为一种跨平台、跨语言的数据交换格式。它允许开发者定义数据结构,然后生成代码以轻松地在各种数据流之间读写这些数据。Protocol...

      Google Protocol Buffers 源码

      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

      Google.ProtocolBuffers.dll类库

      Protocol Buffers 2.4.1 jar

      Protocol Buffers 2.4.1 jar

      中文翻译Google Protocol Buffers中文教程

      中文翻译Google Protocol Buffers中文教程中文翻译Google Protocol Buffers中文教程中文翻译Google Protocol Buffers中文教程中文翻译Google Protocol Buffers中文教程

      基于Java的Protocol Buffers研究.pdf

      同时,Protocol Buffers也可以用于解决网络传递数据的问题,例如在系统之间传递数据时,可以使用Protocol Buffers来定义和处理数据。 Protocol Buffers的优点还在于它可以与其他语言集成,例如Java、Python、C++等...

      ProtocolBuffers-2.2.0-Source (1).tar.gz

      标题中的"ProtocolBuffers-2.2.0-Source (1).tar.gz"指的是谷歌的Protocol Buffers(简称protobuf)的2.2.0版本源代码压缩包,它以.tar.gz格式打包,这是一种常见的Linux和macOS下的文件压缩方式。这个压缩包可能是...

      Protocol Buffers

      Protocol Buffers(简称protobuf)是由Google开发的一种数据序列化协议,它是一种高效、灵活且跨平台的通信数据格式。这个技术允许开发者定义数据结构,然后生成对应的编码和解码代码,使得应用程序可以方便地进行...

      google开源的数据序列化工具Protocol Buffers.zip

      Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。现阶段支持C 、JAVA、Python等三种编程语言。 为什么不只...

      Protocol Buffers for Objective C.zip

      将Protocol Buffers引入Objective-C,可以为iOS和macOS应用提供高效的数据交换格式,降低网络通信和数据持久化的复杂性。 在"Protocol Buffers for Objective C.zip"这个压缩包中,我们可以期待找到与在Objective-C...

      基于ProtocolBuffers的配置下发接口适配与应用_寇阳.pdf

      * 高效:Protocol Buffers可以快速地序列化和反序列化数据,减少数据传输的时间和空间开销。 * 可扩展:Protocol Buffers支持扩展字段,允许用户自定义数据结构。 * 语言无关:Protocol Buffers可以在不同的语言中...

      Protocol Buffers v3.6.0

      protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现,如:java、c#、c++、javascript、go 、python、ruby和php等,每一种实现都包含了相应语言的...

      Google Protocol Buffers浅析

      Google Protocol Buffers浅析

    Global site tag (gtag.js) - Google Analytics