protobuf | grpc

rpc方法定义结尾的分号可有可无
其余的结构定义 都要有:

serveice和rpc统一使用驼峰式命名
修饰词  required\optional \repeated

enum 采用驼峰命名;字段采用大写加下划线书写

限定修饰符 | 数据类型 | 字段名称 | = | 字段编码值 | [字段默认值]
字段编码值
有了该值,通信双方才能互相识别对方的字段,相同的编码值,其限定修饰符和数据类型必须相同,编码值的取值范围为 1~2^324294967296)
其中 1~15的编码时间和空间效率都是最高的,编码值越大,其编码的时间和空间效率就越低,所以建议把经常要传递的值把其字段编码设置为1-15之间的值
1900~2000编码值为Google protobuf 系统内部保留值,建议不要在自己的项目中使用
 数据类型
N 表示打包的字节并不是固定。而是根据数据的大小或者长度
关于 fixed32 和int32的区别。fixed32的打包效率比int32的效率高,
但是使用的空间一般比int32多。因此一个属于时间效率高,一个属于空间效率高

 

 

syntax = "proto3";
// 注释 enum Foo {
FIRST_VALUE = 1;
} service Greeter { rpc Hello(Request) returns (Response) {} } message Request { required
string name = 1;
  message Result{
  }
}
message Response {
  message Result {
  } repeated
Result greeting = 2;
}
proto3支持map类型声明
map<key_type, value_type> map_field = N;
message Project {...}
map<string, Project> projects = 1;
键、值类型可以是内置的类型,也可以是自定义message类型
字段不支持repeated属性

 

 

posted @ 2020-02-28 16:52  慕沁  阅读(223)  评论(0)    收藏  举报