学习Google Protocol buffer之一

  XML这种属于非常强大的一种格式,能存储任何你想存的数据,而且编辑起来还是比较方便的。致命的缺陷在于比较庞大,在某些情况下,序列化和解析都会成为瓶颈。这种对于实时性很强的应用来说,就不太适合了,想象下,设备正在紧张地进行运算,这时候来了一个解析XML任务,如果恰好这个XML比较大,那么势必产生卡顿,这个就会导致很糟糕的体验了。

  二进制格式应该说很普遍的应用了,大家按照字节序列对好,编码和解码都不会有太大问题,但是几乎没什么扩展性,只要一方的格式变了,就得重新对消息,想象下一个有几十个字段的消息,其中有一个出错了,就得从头到尾梳理一遍,很头疼。

  下面是Google Protocol buffer。首先什么是ProtoBuffer,它是一个可扩展,高效,能自动组装并解析结构化数据(类XML)的机制,比XML更小,更快,更简单。用它你可以对你想要的数据结构定义一次,用protobuffer的工具生成一份源代码,用这份源代码就可以从各种各样的流数据中读取或者解析你定义的数据结构。听起来很牛逼的样子,到底它是怎么工作的,又怎么应用的呢?

  Google定义了一个名词叫做protocol buffer message,看到这个词,你就该想到这首先是个Message,那么message里一般都会有格式,真正的数据等等,那么官方的解释来了:这个所谓的message代表一块逻辑信息,这个块里是(名称---值)这样的配对关系表。看到这里就需要问个问题,那它是不是等同与C#里的字典呢?后边会继续进行分析。下面是官方给的一段代码,表示一个Message,功能是描述一个人的信息( information about a person):

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存放在后缀名为.proto的文件里,同一个proto文件里能包含很多这样的message,那么一个message就是一个type吗?既然一个文件里能放很多message,那么放多少合适,什么样的message应该放到一个文件里?Google就想让你把你需要的进行数据交换(包括磁盘读写,网络读写)的信息以这种message的格式存放到这种proto文件里,好吧,那么这里的语法、关键字都有哪些?我又该怎么写进一个文件里呢,难道手写?这些文件又要怎么读取呢?

				
时间: 2024-11-12 03:17:16

学习Google Protocol buffer之一的相关文章

学习Google Protocol buffer之语法

上一篇结尾的时候问了几个问题,其实主要就是这个protoBuffer协议的语法,弄清楚语法后边才好开展工作嘛,不然大眼而对小眼儿,互相不认识,就没法玩耍了.其实就是学习怎么用google提供的这套 protocol buffer language 来组织我用的数据,那个神奇的proto文件的来龙去脉也得搞搞清楚. 好吧,还是看个例子,也是官方的: message SearchRequest { required string query = 1; optional int32 page_numb

【Google Protocol Buffer】Google Protocol Buffer

http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩展的序列化结构数据格式.目前提供了 C++.Java.Python 三种语言的 API. 17 评论: 刘 明, 软件工程师, 上海交大电

转Google Protocol Buffer 的使用和原理

Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩展的序列化结构数据格式.目前提供了 C++.Java.Python 三种语言的 API. 2010 年 11 月 18 日 内容 简介 一个简单的例子 和其他类似技术的比较 高级应用话题 Protobuf 的更多细节 结束语 参考资料 评论 在

Google Protocol Buffer入门

简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件.他们用于 RPC 系统和持续数据存储系统. Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储等领域的语言无关.平台无关.可扩展的序列化结构数据格

Google Protocol Buffer 的使用和原理

Google Protocol Buffer 的使用和原理 1.https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ 2.参考资料:http://blog.csdn.net/educast/article/details/24764205 3.github源码:https://github.com/google/protobuf 4谷歌:https://developers.google.com/protocol-buffers/

Google protocol buffer使用笔记

一 下载 Google下载地址:https://developers.google.com/protocol-buffers/docs/downloads?hl=zh-CN Github下载地址:https://github.com/google/protobuf 我这里下载版本:protobuf-2.6.1.tar.gz 二 编译 1 解压 将上面的压缩包解压到文件夹 protobuf-2.6.1 中. 2 编译 2.1 在protobuf-2.6.1中,找到vsprojects/protob

Google Protocol Buffer项目无法加载解决方案

http://blog.csdn.net/suixiangzhe/article/details/52171313 今天下载Google Protocol Buffer源码研究时发现打开工程后所有项目都提示无法加载,在输出中找到错误提示是未找到导入的项目"C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Props",在网上找了资料是说缺少.NET Core 1.0 f

Google Protocol Buffer 协议

1. Protocol Buffers 简介 Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可以使用该技术来持久化数据或者序列化成网络传输的数据.主要用于数据存储.通信协议等方面.现阶段支持C++.JAVA.Python.Objective-C.C#.Javascript等6种编程语言.Googel 公司 2015-12-31 更新了最新的版本Version 3.0.0-bet

Google Protocol Buffer安装编译及使用

最近玩了玩谷歌的Protocol Buffer,下面就简单介绍下 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过12,183 个.proto 文件,他们用于RPC 系统和持续数据存储系统.Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化.它很适合做数据存储或 RPC 数据交换格式.可用于通讯协议.数据存储