天天看點

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