天天看点

Dapr + .NET Core实战(十二)服务调用之GRPC

4小时Dapr+.NET 5+K8S 的实战  https://ke.qq.com/course/4000292?tuin=1271860f

Dapr进阶虚拟机集群实战(非K8S) https://ke.qq.com/course/4002149?tuin=1271860f

Dapr + .NET Core实战(十二)服务调用之GRPC
Dapr + .NET Core实战(十二)服务调用之GRPC

gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。

gRPC 的主要优点是:

高性能轻量级 RPC 框架。

协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。

可用于多种语言的工具,以生成强类型服务器和客户端。

支持客户端、服务器和双向流式处理调用。

使用 Protobuf 二进制序列化减少对网络的使用。

这些优点使 gRPC 适用于:

效率至关重要的轻量级微服务。

需要多种语言用于开发的系统。

需要处理流式处理请求或响应的点对点实时服务。

Dapr中的GRPC与我们通常情况下使用GRPC大致是一致的,唯一的不同是Dapr中的GRPC会固定调用接口/dapr.proto.runtime.v1.AppCallback/OnInvoke,因此我们在Dapr中使用GRPC时,proto文件中不需要再定义service节点中的rpc接口,只需要定义交互使用的序列化结构体即可。

我们继续使用FrontEnd+BackEnd项目,首先需要将BackEnd中的监听协议切换成https,因为GRPC是基于HTTP2实现的,传输层使用TLS。

1.为BackEnd引入Nuget包

Dapr.AspNetCore

Grpc.AspNetCore

2.在BackEnd中新建Protos/greet.proto文件,定义交互的结构体

注意:不需要定义service.rpc接口,因为Dapr中的GRPC固定调用接口/dapr.proto.runtime.v1.AppCallback/OnInvoke。

3.修改项目文件BackEnd.csproj

4.新增接口类Services/HelloService

HelloService中我们只需要定义OnInvoke方法,通过request.Method来实现不同业务的代码编写。

5.为grpc注入类

6.为grpc新增终结点映射

1.为FrontEnd引入Nuget包

Google.Protobuf

Grpc.Net.Client

Grpc.Tools

2.新增Protos/greet.proto文件

3.修改FrontEnd.csproj文件

4.在DaprController中新增接口

1.运行BackEnd

我们通过--app-protocol grpc指明了使用grpc,通过--app-ssl指明了开启tls

2.运行FrontEnd

3.调用FrontEnd的dapr/grpc接口进行测试,调用成功!!

Dapr + .NET Core实战(十二)服务调用之GRPC