protobuf 數據類型


數據格式

限定修飾符 數據類型 字段名字 = 字段編碼值 [字段默認值]

基本規范

結構定義可以包含: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]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM