专业编程基础技术教程

网站首页 > 基础教程 正文

1-0 Protobuf通信协议.proto文件编写

ccvgpt 2024-11-19 02:15:03 基础教程 6 ℃

具体怎么使用请参考官网: https://protobuf.dev/programming-guides/proto3/

这里主要讲讲 Proto2 or Proto3区别

1-0 Protobuf通信协议.proto文件编写

Proto3 是今后的主要版本,Proto2 除了用于历史遗留项目外,不被推荐使用。

Proto3 不完全兼容 Proto2

下面列出发现的不同之处

  1. 首行必须是 syntax = "proto3"; 用于标识使用 Protobuf3 解析。


  1. 移除了 required 关键字,因为它破坏了 Protobuf 向前/后兼容的特点。


  1. 移除了 optional 关键字,如果字段不赋值,那么就是使用字段类型的默认值。

Protobuf3 在字段被设置为默认值的时候,不会序列化该字段。

这样可以节省空间,提高效率


  1. 移除了 default 关键字,不允许手动指定某个字段的默认值,只能使用字段类型默认值


  1. 枚举类型第一个字段编号必须为 0,它是该枚举的默认值。


  1. repeated字段默认采用packed编码


  1. 增加了Kotlin,Ruby,Objective-C,C#,Dart的支持


  1. 移除了对分组的支持。分组的功能完全可以使用消息嵌套方式实现


  1. 移除了对扩展的支持,新增了Any类型


  1. 新增了json映射特性


  1. proto3在3.5版本之前会丢弃未知字段。但在 3.5 版本中,重新引入了未知字段的保留以匹配 proto2 行为。

  2. 在 3.5 及更高版本中,未知字段在解析过程中保留并包含在序列化输出中

Tags:

最近发表
标签列表