proto3中删除了required字段

proto3中删除了required字段,是因为required字段通常被认为是有害的并且违反了protobuf的兼容性语义。

使用protobuf的整体想法是,允许你添加/删除协议定义的字段,同时仍然完全向前/向后兼容较新/较旧的二进制文件。

required字段打破了这一点。

你永远不能安全地向.proto定义添加required字段,也不能安全地删除现有的required字段,因为这两个操作都会破坏wire兼容性。

例如,如果向.proto定义添加required字段,则使用旧定义构建的二进制文件将无法解析使用旧定义序列化的数据,因为旧数据中不存在required字段。

在一个复杂的系统中, .proto定义在系统的许多不同组件中广泛共享,添加/删除required字段可以轻松地降低系统的多个部分。



为什么Proto3移除了required和optional?插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2021/07/29/proto3-removed-requiredoptional/