gRPC趁现在还没大火,抢先了解一下 (2)

proto文件,各种编程语言是通用的,都可以根据定义好的proto文件生成对应编程语言的代码,重写业务即可。对于自动生成代码,其他编程语言需要借助protoc 工具(点这里去下载),而.Net微软已经封装好了,只要引入了Grpc相关的包,直接编译即可。先简单设置一下proto文件属性,大概步骤如下:

gRPC趁现在还没大火,抢先了解一下

注:如果不想按照上面步骤设置文件属性,也可以直接编辑项目文件也行,如下增加红框部分:

gRPC趁现在还没大火,抢先了解一下

最后编译程序就可以自动生成对应的服务端代码了,如下路径:

gRPC趁现在还没大火,抢先了解一下

重写生成的方法,增加业务逻辑

proto文件生成的代码只是一个约定,不包含业务逻辑,关于具体的业务需要自己处理,如下:

gRPC趁现在还没大火,抢先了解一下

在Startup.cs文件中开启gRPC的功能,如下:

gRPC趁现在还没大火,抢先了解一下

到这服务端就完成了,现在就去写一个客户端连接一下;

2.2 搞一个客户端访问服务

创建一个控制台程序

引入Google.Protobuf、Grpc.Net.Client、Grpc.Tools三个包,然后将服务端写好的proto文件拷贝到项目中,按照上面说的步骤设置一下proto文件属性为Client only,编译即可,项目结构如下:

gRPC趁现在还没大火,抢先了解一下

如果不想通过设置属性的方式,也可以直接修改项目文件,然后编译就可自动生成代码:

gRPC趁现在还没大火,抢先了解一下

现在可以写业务啦

新增用户调用远程服务逻辑:

gRPC趁现在还没大火,抢先了解一下

查询用户调用远程服务逻辑:

gRPC趁现在还没大火,抢先了解一下

从上面代码来看,使用是不是比较简单,只需要知道远程地址即可,远程调用就像调用本地方法一样,也不用判断状态码,不用自己去解析内容,而是按照约定直接返回结果。

先运行服务端,再运行客户端,效果如下:

gRPC趁现在还没大火,抢先了解一下

调试时注意:

由于gRPC使用SSL/TLS保护服务,在调试的时候尽管指定为https连接也会报错,这是因为系统没有信任微软开发证书,执行以下命令即可:

dotnet dev-certs https --trust

然后就可以正常调试了;当然在生产环境中,还是需要配置真实证书的,如果不想用证书也是可以滴,这个后续单独会说到。

2.3 使用.NetCore模板快速生成服务端

.NetCore已经将gRPC服务端封装成一个模板了,可以通过模板快速创建一个gRPC项目,如下:

gRPC趁现在还没大火,抢先了解一下

创建出来的服务端项目基本和刚刚创建的一样,编译运行就能启动;小伙伴后续可以直接用模板创建,在里面添加对应的业务代码即可。

本来打算把gRPC的四种模式接着演示的,但考虑到proto文件的编写是一个重点,所以总结了一些常用的写法,先熟悉熟悉proto文件的编写,后续再通过案例演示加深印象就更好啦。

3. Protocol Buffer 是重点

通过上面示例演示,proto文件用于约定服务接口,各编程语言用其可以生成对应的代码,然后进行业务逻辑的编写,可见proto文件扮演了很重要的角色。在性能方便是以二进制格式进行解析,内容小,传输效率高,适合传递大量数据的场景。
proto文件中每一个message代表了一类结构化的数据,message 里面定义了每一个属性的类型和名字,并指定一个Tag(每个属性后面的数字)。在gRPC传输过程中是通过Tag这个数字进行标识属性的,不是用属性名

3.1 数据类型

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwfsds.html