- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ProtocolBuffers官方-开发指南
/protocol-buffers/docs/overview开发指南欢迎来到protocol buffer的开发者指南文档,一种语言无关、平台无关、扩展性好的用于通信协议、数据存储的结构化数据序列化方法。本文档是面向计划将protocol buffer使用的到自己的Java、C++或Python应用程序中的开发者的。这个概览介绍了protocol buffer,并告诉你如何开始,你随后可以跟随编程指导(/protocol-buffers/docs/tutorials)去深入研究protocol buffer编码方式(/protocol-buffers/docs/encoding)。同时API参考文档(/protocol-buffers/docs/reference/overview)也是提供了这三种编程语言的版本,以及可以参考语言指南(/protocol-buffers/docs/proto)和样式指南(/protocol-buffers/docs/style)去编写?.proto?文件。什么是protocol bufferProtocolBuffer是用于结构化数据序列化的灵活、高效、自动的方法,类似XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。他们如何工作你首先需要在一个 .proto 文件中定义你需要做序列化的数据结构信息。每个ProtocolBuffer信息是一小段逻辑记录,包含一系列的键值对。这里有个非常简单的 .proto 文件定义了个人信息:message Person {required string name = 1;required int32 id = 2;optional string email = 3;enumPhoneType { MOBILE = 0; HOME = 1; WORK = 2; }messagePhoneNumber {required string number = 1;optionalPhoneType type = 2 [default = HOME]; }repeatedPhoneNumber phone = 4;}有如你所见,消息格式很简单,每个消息类型拥有一个或多个特定的数字字段,每个字段拥有一个名字和一个值类型。值类型可以是数字(整数或浮点)、布尔型、字符串、原始字节或者其他ProtocolBuffer类型,还允许数据结构的多层次嵌套。你可以指定可选字段,必选字段和重复字段。你可以在(/protocol-buffers/docs/proto)找到更多关于如何编写 .proto 文件的信息。一旦你定义了自己的报文格式(message),你就可以运行ProtocolBuffer编译器,将你的 .proto 文件编译成特定语言的类。这些类提供了简单的方法访问每个字段(像是 name() 和set_name() ),像是访问类的方法一样将结构序列化或反序列化。例如你可以选择C++语言,运行编译如上的协议文件生成类叫做 Person 。随后你就可以在应用中使用这个类来序列化的读取报文信息。你可以这么写代码:Personperson;person.set_name(John Doe);person.set_id(1234);person.set_email(jdoe@);fstream output(myfile,ios::out|ios::binary);person.SerializeToOstream(output);然后,你可以读取报文中的数据:fstream input(myfile,ios::in|ios::binary);Personperson;person.ParseFromIstream(input);coutName: ()endl;coutE-mail: person.email()endl;你可以在不影响向后兼容的情况下随意给数据结构增加字段,在反序列化的时候,旧有的数据会忽略新的字段。所以如果使用ProtocolBuffer作为通信协议,你可以无须担心破坏现有代码的情况下扩展协议。你可以在API参考(/protocol-buffers/docs/reference/overview)中找到完整的参考,并且关于ProtocolBuffer的报文格式编码则可以在(/protocol-buffers/docs/encoding)中找到参考。为什么不用XML?ProtocolBuffer拥有多项比XML更高级的序列化结构数据的特性,ProtocolBuffer:·更简单·小3-10倍·快20-100倍·更少的歧义·可以方便
文档评论(0)