我的Protobuf訊息設計原則
1 |
網路通訊涉及到訊息的定義,不管是使用二進位制模式、xml、json等格式。訊息都可以大體的分為 命令訊息、請求訊息、應答訊息和指示訊息4大訊息型別。一般情況下每個訊息還還有包含一個序列號和一個能夠唯一區分型別型別的訊息編號,編號可以使用字串、整數或者列舉等。
1. 使用 protobuf 的enum定於訊息的編號,也就是訊息的型別。
我會為每個系統都定義一個MSG列舉。包含系統用到的所有訊息的列舉編號
01 |
enum MSG |
02 |
{ |
03 |
Login_Request
= 0x00001001; |
04 |
Login_Response
= 0x00001002; |
05 |
06 |
XXX_Request
= 0x00001003; |
07 |
XXX_Request
= 0x00001004; |
08 |
09 |
XXX_Command
= 0x00002001; |
10 |
11 |
XXX_Indication
= 0x00003001; |
12 |
} |
2. 會為每個具有訊息體的訊息定義一個對應的protobuf message。例如Login_Request會有一個對應LoginRequest訊息。
1 |
message
LoginRequest |
2 |
{ |
3 |
required
bytes username = 1; |