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++文件。但有的时候,这些过程是必须的。