數據格式
限定修飾符 數據類型 字段名字 = 字段編碼值 [字段默認值]
基本規范
結構定義可以包含:message、service、enum
Message 命名采用駝峰命名方式,字段命名采用小寫字母加下划線分隔方式
message LoginUser{
required string user_name = 1;
}
enum 類型名采用駝峰命名方式,字段命名采用大寫字母加下划線分隔方式
enum Foo {
FIRST_VALUE = 1;
SECOND_VALUE = 2;
}
service 與 rpc 方法名統一采用駝峰式命名, 目前未使用到.
限定修飾符
required/optional/repeated
required:表示是一個必須字段.
optional:表示是一個可選字段.
repeated:表示該字段可以包含 0~N 個元素, 相當於傳遞一個數組的值.
數據類型
可message嵌套,也可以message里面定義enum類型成員,還包括下圖各種數據類型
字段名字
rotobuf建議字段的命名采用以下划線分割的駝峰式。例如 first_name 而不是firstName.
字段編碼值
有了該值,通信雙方才能互相識別對方的字段。當然相同的編碼值,其限定修飾符和數據類型必須相同。
編碼值的取值范圍為 1~2^32(4294967296)。
其中 1~15的編碼時間和空間效率都是最高的,編碼值越大,其編碼的時間和空間效率就越低(相對於1-15),當然一般情況下相鄰的2個值編碼效率的是相同的,除非2個值恰好實在4字節,12字節,20字節等的臨界區。比如15和16.
1900~2000編碼值為Google protobuf 系統內部保留值,建議不要在自己的項目中使用。
protobuf 還建議把經常要傳遞的值把其字段編碼設置為1-15之間的值。
消息中的字段的編碼值無需連續,只要是合法的,並且不能在同一個消息中有字段包含相同的編碼值。
建議:項目投入運營以后涉及到版本升級時的新增消息字段全部使用optional或者repeated,盡量不實用required。如果使用了required,需要全網統一升級,如果使用optional或者repeated可以平滑升級。
字段默認值
可添加默認參數 , eg: required Foo type = 1 [default = FIRST_VALUE]