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 实现完成,生产环境的话势必没这么简单

 

posted @ 2020-06-05 15:50  AresYM  阅读(172)  评论(0编辑  收藏  举报