Protobuf3基本语法
ProtoBuf (google协议缓冲区)是google公司用于数据交换的顺序结构化数据格式。它具有跨平台、跨语言和可扩展性的特点。它有常见的同类型的XML和JSON,但传输量更小,编解码能力更高。特别适用于数据存储、网络数据传输等对存储量和实时性要求较高的领域。目前已经发展到protoc3版本。
优点:空间效率高,时间效率高,对数据大小敏感,传输效率高。
缺点:消息结构可读性不高,序列化的字节序列是二进制序列,无法简单分析有效性。
备注:最后一次类型golang需要引入包github.com/golang/protobuf/ptypes/timestamp,,其定义如下。
然后。protp文件需要导入到Google/proto buf/timestamp . proto中。
如果一个字段被重复修改,说明它是一个列表型字段,相当于golang中的一个切片。
如果要保留一些数字标签或字段,可以使用保留修饰符。
第一个枚举值的数值必须为0,并且必须至少有一个枚举值。一个数值可以对应多个枚举值,必须用选项allow_alias = true标记。不建议使用负值。
在您的中指定服务。proto文件,然后在服务中定义rpc方法。注意指定参数和返回值。
GRPC允许您定义四种服务方法。
客户端使用存根向服务器发送请求,并等待响应返回,就像普通的函数调用一样。
您可以通过在响应返回参数类型之前插入stream关键字来指定服务器端流方法。客户端向服务器发送一个请求,并获取一个流来读取返回的消息序列。客户端读取返回的流,直到其中没有任何消息。
通过在请求参数类型之前指定stream关键字来指定客户端的流方法。客户端编写一个消息序列,并将其发送到服务器,也使用流。一旦客户机写完消息,它就等待服务器读完并返回它的响应。
通过在请求和响应前添加stream关键字来键入方法。这两个流独立操作,因此客户端和服务器可以按照他们喜欢的任何顺序进行读写:例如,服务器可以在写入响应之前等待接收所有客户端消息,或者读写消息,或者读写的其他组合。