Google Protocol Buffer使用
關鍵語義
語義 |
名稱 |
emun |
枚舉類 |
message |
java類定義 |
optional,require,repeated |
數據類型,對象引用 |
import |
引用其他proto文件 |
package |
對應生成java類的包名 |
optional java_package |
定義編譯後產生的文件所在包結構的,即編寫生成後的java文件所在的目錄(多層次結構) |
optional java_outer_classname |
編譯生成的java文件名稱 |
sevice |
暫時不知道功能,後續查閱後補充 |
類型轉換對應關係
protoc類型 |
Java類型 |
double |
double |
float |
float |
int32 |
int |
int64 |
long |
uint32 |
int |
uint64 |
long |
sint32 |
int |
sint64 |
long |
fixed32 |
int |
fixed64 |
long |
sfixed32 |
int |
sfixed64 |
long |
bool |
boolean |
string |
String |
bytes |
ByteString |
編譯命令
protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR --python_out=DST_DIR path/to/file.proto
--proto_path=IMPORT_PATH 默認當前目錄
--cpp_out 生成的c++文件目錄
--java_out 生成的java文件目錄
--pytho_out 生成的python文件目錄
總結
protocol buffer的使用還是相對簡單點,唯一麻煩的就是多了一個預編譯的過程,將.proto文件轉換成java文件或c++文件。但有的時候,這些過程是必須的。