首页 > 其他分享 >gRPC .proto文件解析

gRPC .proto文件解析

时间:2023-12-24 17:46:04浏览次数:32  
标签:package gRPC proto grpc go message 解析 hello

.proto文件解析

书接上回,创建了hello_grpc.proto文件后对其中参数进行解释,还是以上次的代码为案例

syntax = "proto3";

option go_package="./;hello_grpc";

package hello_grpc;

message Req {
  string message = 1;
}

message Res {
  string message = 1;
}

service HelloG {
  rpc SayHi(Req) returns (Res);
}

1. syntax = "proto3";

protobuf默认支持的版本是2,现在一般使用3版本,所以需要手动指定版本号,如果不这样做,协议缓冲区编译器将默认正在使用proto2,同时这也必须是文件的第一个非空的非注释行

2. option go_package="./;hello_grpc";

go_package选项,用于指定包含所生成代码的Go软件包的完整导入路径,即你最后生成的文件存放位置,hello_grpc就是生成go文件的包名,和你的.proto文件名相同

3. package hello_grpc;

package关键字指明当前是由hello_grpc包生成go文件,生成之后和包名保持一致,但是如果定义了"option go_package"参数,则package的参数自动失效

☆4. message

通过message关键定义传输数据的格式,类似于go语言中的结构体,是包含一系列类型数据的集合。
许多标准的简单数据类型都可以作为字段类型,包括bool,int32,float,double和string,也可以使用其他message类型作为字段类型,类型结构体的嵌套

message内容详解

string name = 1;
这里的1不是值,而是编号,表示字段1,而且数组不能重复,可以理解为主键id=1
json中是通过成员名称绑定数据,protobuf编码是通过成员唯一编号绑定数据
故protobuf编码后的数据体积会比json编码后的小

☆5. service

如果需要将message与RPC一起使用,则可以在.proto文件中定义RPC服务接口,protobuf编译器将根据你选择的语言生成RPC接口代码

标签:package,gRPC,proto,grpc,go,message,解析,hello
From: https://www.cnblogs.com/mr-wushuang/p/17924646.html

相关文章

  • 【线性回归模型评价指标解析】
    线性回归模型评价指标解析(文章目录)前言线性回归是统计学中一种常见的方法,用于建立自变量与因变量之间的线性关系模型。在实际应用中,我们常常需要对线性回归模型的性能进行评估,以了解模型的拟合程度和预测能力。本文将介绍线性回归中几种常见的模型评价指标,包括均方误差(MeanS......
  • spring加载bean流程解析
    spring加载bean流程解析转载自:https://www.cnblogs.com/wyq178/p/11415877.htmlspring作为目前我们开发的基础框架,每天的开发工作基本和他形影不离,作为管理bean的最经典、优秀的框架,它的复杂程度往往令人望而却步。不过作为朝夕相处的框架,我们必须得明白一个问题就......
  • dns域名解析
    dns域名解析,需要一台服务器server1PC要先知道dns服务器的存在,dhcp配置服务器测试pc是否知道服务器存在:......
  • IP地址定位解析
    目录1IP地址定位解析1.1获取用户IP地址1.2淘宝库获取用户IP地址属地1.3通过Ip2region定位1.3.1Ip2region介绍1.3.2Ip2region特性1.3.3客户端实现1.3.3.1引入Maven仓库1.3.3.2基于文件查询1.3.3.3缓存VectorIndex索引1.3.3.4缓存整个xdb数据1IP地址定位......
  • Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析
    学习基础知识掌握Go语言的常见概念,如变量、循环、条件语句、函数、数据类型等等。深入了解Go基础知识的好起点是查阅Go官方文档文章链接:Go编程语言详解:用途、特性、与Python和C++的比较基本语法了解Go语言的基本语法,包括Go程序的执行方式、包引入、主函数等Go......
  • Go 语言学习指南:变量、循环、函数、数据类型、Web 框架等全面解析
    学习基础知识掌握Go语言的常见概念,如变量、循环、条件语句、函数、数据类型等等。深入了解Go基础知识的好起点是查阅Go官方文档文章链接:Go编程语言详解:用途、特性、与Python和C++的比较基本语法了解Go语言的基本语法,包括Go程序的执行方式、包引入、主函数等Go......
  • 全面的开发者文档和用户目标解析:API 文档指南和开发者旅程
    开发者文档开发者文档,也称为API文档,是一种专门针对软件开发人员的技术写作形式。这种类型的文档通常包括API的技术规范、代码注释、软件设计和架构以及软件开发中涉及的其他详细技术描述。开发者文档是开发人员的重要工具,因为它提供了使用和集成特定软件、库或API的必要指南......
  • 全面的开发者文档和用户目标解析:API 文档指南和开发者旅程
    开发者文档开发者文档,也称为API文档,是一种专门针对软件开发人员的技术写作形式。这种类型的文档通常包括API的技术规范、代码注释、软件设计和架构以及软件开发中涉及的其他详细技术描述。开发者文档是开发人员的重要工具,因为它提供了使用和集成特定软件、库或API的必要指......
  • C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序
    https://www.cnblogs.com/s0611163/p/11872484.html测试结果整理后: 结论:1、这几个工具中,protobuf-net序列化和反序列化效率是最快的2、BinaryFormatter和Newtonsoft.Json反序列化慢的比较多3、Newtonsoft.Json序列化后的文件体积比较大4、Newtonsoft.Json在序列化反序列......
  • Feign源码解析:初始化过程(二)
    背景上一篇介绍了Feign源码初始化的一部分,内容主要是,@EnableFeignClients、@FeignClient这些注解,都支持设置一些自定义的配置类:Acustom@Configurationforallfeignclients.Cancontainoverride@Beandefinitionforthepiecesthatmakeuptheclient,forinstance......