Grpc概述
gRPC ——开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。
到底是什么
在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端的应用方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似。 gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。简而言之,Grpc的服务使用就如同本地函数一样。
- Protocol Buffers ,gRPC 默认使用 protocol buffers协议,这是 Google 开源的一套成熟的结构数据序列化机制(当然也可以使用其他数据格式如 JSON)。
- 为什么使用Grpc ,我们的例子是一个简单的路由映射的应用,它允许客户端获取路由特性的信息,生成路由的总结,以及交互路由信息,如服务器和其他客户端的流量更新。
开始使用
本案例使用的是.NET 7 + VS2022 1.首先创建Grpc的服务端,名称GrpcService。
2.创建后的项目目录有些不一样 I.Properties文件夹下的launchSettings.json配置服务启动的ip和port以及其他设置
II.Protos文件夹下的greet.proto,配置服务端方法(如:SayHello)对外的配置,以及参数类型和返回值类型。
III.Services文件夹下的GreeterService.cs,类似与MVC、API的Controller。写方法(实际项目业务逻辑会分开)。
V.appsettings.Development.json是开发环境的配置文件,appsettings.json就不用多说了吧。 VI.Program.cs程序入口与.NET 5区别还是有的,没有了Startup.cs文件。融合在了一起。builder.Services.AddGrpc()、app.MapGrpcService() 添加Grpc服务通过Map进入管道
自定义一个方法CustomAction,返回值与请求参数。
Greeter这个类是自己生成的,类似与Winform里面的控件自动生成代码。我们只用在greet.proto文件里去写我们的方法。具体实现GreeterService.cs。
重新编译项目,OK,我们可以重写父类的CustomAction方法了。
创建Grpc客户端
这里我们用的是Web Api名称GrpcClien,创建一个GrpcController。 并添加Nuget包。
Grpc.Net.Client Google.Protobuf Grpc.Tools 双击GrpcClien项目打开csproj文件,添加Protobuf节点如下 此时已经完成了一大半,最后就是将GrpcService里面的Protos文件夹拷贝到GrpcClient中。
在GrpcController去调用我们的CustomAction 这里的https://localhost:7073是你GrpcService的启动地址。 OK到这里我们基本上是知道如何创建Grpc服务了。 下章节我们继续对Grpc服务做治理。
|