如何正确的编译Protocol Buffer文件

PB的定义:

ProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。

PB文件格式:

编译PB文件:

1、需要相关的jar包和工具(文末有相关工具的下载地址)

2、在protoc.exe的所在文件夹位置打开命令窗口

3、PB文件编译成功为java文件

使用方法:

编译后的Java文件就相当于Json结构的实体类(Bean类),使用方法相同。

PB文件格式的模块说明:

1、package包名路径:为编译后的java文件的位置路径

2、optimize_for是文件级别的选项:

Protocol Buffer定义三种优化级别SPEED/CODE_SIZE/LITE_RUNTIME。缺省情况下是SPEED。

SPEED: 表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。

CODE_SIZE: 和SPEED恰恰相反,代码运行效率较低,但是由此生成的代码编译后会占用更少的空间,通常用于资源有限的平台,如Mobile。

LITE_RUNTIME: 生成的代码执行效率高,同时生成代码编译后的所占用的空间也是非常少。这是以牺牲Protocol Buffer提供的反射功能为代价的。因此我们在C++中链接Protocol Buffer库时仅需链接libprotobuf-lite,而非libprotobuf。在Java中仅需包含protobuf-java-2.5.0-lite.jar,而非protobuf-java-2.5.0.jar。

SPEED和LITE_RUNTIME相比,在于调试级别上,例如 msg.SerializeToString(&str) 在SPEED模式下会利用反射机制打印出详细字段和字段值,但是LITE_RUNTIME则仅仅打印字段值组成的字符串;

 因此:可以在程序调试阶段使用 SPEED模式,而上线以后使用提升性能使用 LITE_RUNTIME 模式优化。

3、消息定义:

字段格式:限定修饰符① | 数据类型② | 字段名称③ | = | 字段编码值④ | [字段默认值⑤]

①②③④⑤这五点的具体解释请移步到此处详解

相关链接

参考PB详解:PB协议说明与使用

编译PB文件相关工具包:PB文件编译工具包


版权声明:本文为L0123456L原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。