翻譯自 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 獲取更多信息。