我是靠谱客的博主 洁净睫毛,最近开发中收集的这篇文章主要介绍protobuf格式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

protobuf 消息

message由至少一个字段组合而成,类似于C语言中的结构。每个字段都有一定的格式:

限定修饰符 | 数据类型 | 字段名称 | = | 字段编码值 | [字段默认值]

 

限定修饰符:

  • Required:表示是一个必须字段,必须相对于发送方,在发送消息之前必须设置该字段的值;对于接收方,必须能够识别该字段的意思。发送之前没有设置required字段或者无法识别required字段都会引发编解码异常,导致消息被丢弃。
  • Optional:表示是一个可选字段,可选对于发送方,在发送消息时,可以有选择性的设置或者不设置该字段的值;对于接收方,如果能够识别可选字段就进行相应的处理,如果无法识别,则忽略该字段,消息中的其它字段正常处理。很多接口在升级版本中都把后来添加的字段都统一的设置为optional字段,这样老的版本无需升级程序也可以正常的与新的软件进行通信,只不过新的字段无法识别而已,因为并不是每个节点都需要新的功能,因此可以做到按需升级和平滑过渡。
  • Repeated:表示该字段可以包含0 ~ N个元素,可以看作是在传递数组。

 

字段名称:

字段名称的命名与C、C++、Java等语言的变量命名方式几乎是相同的。
protobuf建议字段的命名采用以下划线分割的驼峰式,例如 first_name 而不是firstName。

 

字段编码值:

编码值的取值范围为 1~2^32(4294967296)。

消息中的字段的编码值无需连续,只要是合法的,并且不能在同一个消息中有字段包含相同的编码值。

protobuf 建议把经常要传递的值把其字段编码设置为1-15之间的值。

 

字段默认值:

发送数据时,对于required数据类型,如果用户没有设置值,则使用默认值传递到对端;

接收数据时,对于optional字段,如果没有接收到optional字段,则设置为默认值。

 

 

另外:

  • message消息支持嵌套定义,消息可以包含另一个消息作为其字段,也可以在消息内定义一个新的消息;
  • proto定义文件支持import导入其它proto定义文件;
  • 每个proto文件指定一个package名称,对于java解析为java中的包。对于C++则解析为名称空间。

最后

以上就是洁净睫毛为你收集整理的protobuf格式的全部内容,希望文章能够帮你解决protobuf格式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部