概述
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格式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复