protoBuf 详细介绍

韭菜根 发布于 2012/06/21 09:51
阅读 1K+
收藏 0

先来个例子看看

package proto.test2;  
  
option java_package = "proto.test";  
option java_outer_classname = "RequestBPO";  
  
option optimize_for = SPEED;  
  
message Request{  
  optional int32 num = 1;  
  required string msg = 2;
  repeated Keyval maps = 3 ;
  optional bool right = 4 ;
} 
message Keyval{
   optional string key = 1;
   optional string value = 2;
}

使用protoc.exe --java_out=src\  src\request.proto 编译

即可在 src\proto\test下生成 RequestBPO 类  

为什么不是proto.test2呢,因为 option java_package 的优先级比package的优先级要高

如果没有option java_package 那么就会在 proto.test2下生成。

文件里面要定义消息格式  例: message SomeMessage{...} 这个样子,可以定义多个,也可以嵌套定义

SomeMessage是最终生成BPO中的request message的类名

下面看message中支持的类型   定义属性格式是这个样子滴: optional|required|repeated   type  name = order;

第一个是描述符只有那三种, type有 double,float,int32对应java中的double,float,int

还有string对应string, bool对应boolean, repeated则对应为list 

名称随便起,貌似没有啥关键字。 最后这个是order,必须大于0 应该是在协议中传输时有用吧

上面repeated Keyval相当于自定义类型了。还有嵌套定义的情况,我没细看。等用到了再来更新。

加载中
0
韭菜根
韭菜根
格式怎么有点乱, 都断成两行了
返回顶部
顶部