Google Protocol Buffer 基础

本文介绍了Google Protocol Buffer的基础知识,包括如何编写proto文件、编译成目标语言、Message的嵌套和Import关键字的使用,以及动态编译和更新proto的要求。
摘要由CSDN通过智能技术生成

Google Protocol Buffer

 

目录

0 简介

1 编写 proto 文件

2 编译proto 文件成目标语言

3 Writer 的主要代码

4 Reader的主要代码

5 Message可以嵌套

6 Import 关键字

7 动态编译

8 使用动态编译后的 Message

9 对更新proto有以下几点要求


0 简介

Google 公司内部的混合语言数据标准,用于结构化数据序列化

用做数据存储和作为不同应用,不同语言之间相互通信的数据交换格式

 

1 编写 proto 文件

protobuf 的术语中,结构化数据被称为 Message

 proto 文件:

proto 文件的文件名命名规则(最好这样): packageName.MessageName.proto

1

2

3

4

5

6

7

package lm;  //避免名称冲突,可以给每个文件指定一个package名称

message helloworld

{

   required int32     id = 1;  // ID   用来标记该字段在序列化后的二进制数据中所在的field,不能改变 1到15范围的采用一个字节进行编码。所以通常将标签1到15用于频繁发生的消息字段。

   required string    str = 2;  // str

   optional int32     opt = 3;  //optional field

}

 

上例中,package 名字叫做 lm,定义了一个消息 helloworld,该消息有三个成员,类型为 int32 id,另一个为类型为 string 的成员 stropt 是一个可选的成员,即消息中可以不包含该成员。

 

限定修饰符:

包含 required\optional\repeated

Required: 表示是一个必须字段使用建议:除非确定某个字段一定会被设值,否则使用optional代替required???

Optional:表示是一个可选字段,可选对于发送方,很多接口在升级版本中都把后来添加的字段都统一的设置为optional字段,这样老的版本无需升级程序也可以正常的与新的软件进行通信,只不过新的字段无法识别而已

Repeated:表示该字段可以包含0~N个元素。其特性和optional一样,但是每一次可以包含多个值

 

 

2 编译proto 文件成目标语言

假设您的 proto 文件存放在 $SRC_DIR 下面,您也想把生成的文件放

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值