翻译自 API Design Guide - Using proto3node
这一章讨论在 API 设计中如何使用 Protocol Buffer。为了简化开发体验并提升运行效率,gPRC API 应该(should) 在 API 定义时使用 Protocol Buffers 第 3 版(proto3)。git
Protocol Buffer 是一个为了定义数据结构和编程接口的语言独立平台独立的简单的接口定义语言(IDL)。它支持二进制和文本格式,而且可以在不一样的平台不一样的协议中使用。github
proto3 是 Protocol Buffer 的最新版本,与 proto2 比有以下改变:编程
原始字段(primitive fields)再也不支持 hasField
。未设置的原始字段有语言相关的默认值。api
消息字段仍然可用,能够使用编译器生成的 hasField
方法或与 null 进行比较或与由具体实现定义的哨兵值比较。数据结构
再也不支持用户自定义的字段默认值ide
枚举定义 必须(must) 以 0 开始性能
再也不支持 required 字段ui
再也不支持扩展(extensions),请使用 google.protobuf.Any
google
因为向后兼容性和运行时兼容性的缘由,google/protobuf/descriptor.proto
特殊例外
删除了组语法(group)
删除这些特性是为了让 API 的设计更加简洁可靠和提升性能。例如在记录日志前常常须要过滤一些敏感字段,但当字段是 required 时,这种操做是不可能的。
查看 Protocol Buffers 获取更多信息。