Dapr 為本地呼叫實現 HTTP 和 gRPC API 。 通常大家第一時間想到的是透過 gRPC 呼叫 Dapr,更重要的一點是Dapr 也可以透過 gRPC 與應用程式通訊。
要做到這一點,原理很簡單,應用程式需要託管一個gRPC伺服器,並實現 Dapr 的GRPC 規範介面 Dapr appcallback服務。 這個整合可以幫我們利用 Dapr 的服務呼叫 、 輸入繫結 和 釋出訂閱等構建基塊來觸發我們的整合服務,例如做分散式整合,最典型的一個應用就是把Dapr和Logic Apps整合起來,實現Dapr內建的工作流引擎: https://github.com/dapr/workflows
Dapr Workflow的實現和應用具體可以閱讀朱永光寫的一篇文章 Dapr雲原生應用開發系列7:工作流整合 。
Dapr 和 Grpc整合的另一個應用場景就是開發GRPC的服務了,Dapr中的GRPC與我們通常情況下使用GRPC大致是一致的,唯一的不同是Dapr中的GRPC會固定呼叫介面 /dapr.proto.runtime.v1.AppCallback/OnInvoke,因此我們在Dapr中使用GRPC時,proto檔案中不需要再定義service節點中的rpc介面,只需要定義互動使用的序列化結構體即可。 這方面的一個示例可以閱讀陳一獅寫的一篇文章: Dapr + .NET Core實戰(十二)服務呼叫之GRPC