12、gRPC
概念
https://www.jianshu.com/p/9c947d98e192
怎么用.net core 实现一个grpc例子
msdn文档
https://docs.microsoft.com/en-us/aspnet/core/grpc/aspnetcore?view=aspnetcore-3.0&tabs=visual-studio
1、新建Sever项目
因为是演示程序,所以直接新建一个 gRPC项目,然后再去一点一点剖析
项目结构如下
没有client端的,一会儿再弄,先看一下这里都是啥
首先引用的是Grpc.AspNetCore包
然后有一个Protos文件夹,文件夹里是greet.proto文件,从概念的文章中可以知道,这是rpc接口的定义文件,可以打开来看
编译器会根据这个文件,生成一个名字为Greeter的partial类,说白了就是.net 的语法糖帮你实现了gRPC服务端,直接拿来用就完了,但是我们还是要弄清楚他都干了啥,在这不多说了,去翻文档吧,最好还是自己去实现吧,因为这种自动生成的代码始终不受你控制,不受控制的东西始终让人没底,就像我们用在生产环境的东西,要么是大厂在用,要么是拥有开源社区
service文件夹,里面是具体的server业务代码,他继承了上面根据greet.proto生成的类,然后实现服务方法,并给出返回值
然后是startup文件,内容如下
server端大概如此
2、新建client端
新建一个控制台应用程序
拷贝server端的 Proto文件到client端
然后修改csproj文件
<ItemGroup>
<Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
</ItemGroup>
client端,引用右键,选择添加连接的服务(想起了当年的webservice)
服务引用,点gRPC
点确定后,就自动去生成代码去了
修改Program.cs
客户端调用
调试运行
先启动服务端
启动客户端
客户端获取到了client实例,发起请求到服务端
服务端收到请求,业务处理完毕后返回
客户端收到返回值
简单的gRPC的.net core 实现完成,生产环境的话势必没这么简单