若您 不知道什麼是 Dapr尚未安裝環境,您可以先閱讀 Dapr 基礎觀念介紹與建立環境  這篇文章。


Dapr 服務調用 (Service invocation) 為建構一個 Dapr instance ,以 Sidecar 模式與應用程式進行溝通。透過 Sidecar 模式,您不需要加入任何程式碼到你的應用程式,降低整合難度並提高擴充性。在微服務的世界,要正確、安全且可靠 (如:重試取得目前狀態診斷問題...等) 的呼叫不同服務相當不容易,透過 服務調用,您可以更輕鬆的管理應用程式。


服務調用運作原理




過去,我們會使用 HTTP 或 gRPC 標準通訊協定直接應用程式直接進行互動。但在 Dapr 的架構下,我們則是透過呼叫 Dapr Runtime 與應用程式進行互動。如前面所提到的,多出來的這一層 Dapr Runtime 我們稱為邊車模式 (Sidecar Pattern),可以為您的應用程式增加額外的管理服務(如: 狀態管理、失敗重試、身分驗證與問題診斷...等),而不需要修改既有程式碼。

那讀者一定會問,我該如何與 Dapr Runtime 進行溝通呢

您可以透過 Dapr 內建的  來使用 Dapr Runtime (HTTP 與 gRPC 通訊協定),其 URL 格式如下:



<dapr-port> Dapr 聆聽的 HTTP Port

<application-id> 要呼叫的應用程式 ID (Dapr 啟動時給的名稱)

<method-name> 要呼叫應用程式的方法名稱


接下來,我們起一個 .NET Core WebAPI 應用程式來說明,讓您更快了解   Invoke API 與 原有 WebAPI 如何對應




第一個 Dapr 服務 - 以 .NET Core WebAPI 為例

在執行下列範例前,請先確認已經安裝 .NET Core 3.1 SDK (或更高) 版本


首先,我們要建立一個 .NET Core WebAPI 應用程式

以管理者身分開啟命令提示字元,輸入 dotnet new webapi -n WebAPI --no-https 建立專案





切換目錄至 WebAPI,輸入 cd WebAPI 

接下來,輸入指令 dotnet run --urls=http://localhost:5000/ 啟動專案




接下來我們進行測試 (你可以開啟瀏覽器、Postman 或 PowerSehll ..等。任何可以測試 WebAPI 的工具皆可),我們服務啟動的位置為 http://localhost:5000,而 API Path 為 WeatherForecast 。我們開啟 PowerShell ,直接輸入下列指令進行測試

Invoke-WebRequest -URI http://localhost:5000/WeatherForecast -UseBasicParsing

確認回傳訊息沒問題後,我們完成了 WebAPI 建立,在原來的命令提示字元按下 Ctrl + c 關閉應用程式。





接下來,我們要使用 Dapr 啟動 WebAPI,達到服務調用效果...。輸入指令方式有兩種(則一即可):

dapr run --app-id <自己取名的app-id> --app-port <應用程式 port> --dapr-http-port <dapr port> --  dotnet run

以我的範例為

dapr run --app-id webapi --app-port 5000 --dapr-http-port 3500 -- dotnet run --urls=http://localhost:5000/




另一種啟動方式是使用指令: dotnet 應用程式.dll,範例如下:

dapr run --app-id <自己取名的app-id> --app-port <應用程式 port> --dapr-http-port <dapr port> -- dotnet <path-to-dll> --urls=http://localhost:5000/

以我的範例為

dapr run --app-id webapi --app-port 5000 --dapr-http-port 3500 -- dotnet bin\Debug\net6.0\WebAPI.dll --urls=http://localhost:5000/



您可以另開命令提示字元,輸入 dapr list 確認服務運作狀態





Dapr Invoke API 完整 URL為 http://localhost:3500/v1.0/invoke/webapi/method/WeatherForecast,其中

<dapr-port> 3500

<application-id> webapi

<method-name> WeatherForecast


開啟 PowerShell ,直接輸入下列指令進行測試,確認服務可以正常呼叫,也回傳相同的結果,即可以驗證前文所提到的,透過 invoke api 方式,讓 dapr 調用應用程式的服務

Invoke-WebRequest -URI http://localhost:3500/v1.0/invoke/webapi/method/WeatherForecast -UseBasicParsing








透過 Dapr CLI 進行測試

在啟動 Dapr 服務後,除了透過一般 HTTP 測試工具進行測試外,您也可以透過 Dapr CLI 進行測試,其指令格式如下
dapr invoke --app-id <應用程式ID> --verb "<HTTP Verb>" --method <方法名稱>
以我的範例來說,其指令為
dapr invoke --app-id webapi --verb "GET" --method WeatherForecast






執行狀態檢視

在本機執行階段,你可以在工作管理員中找到 daprd 執行程序,即為 sidecar




您也可以開啟瀏覽器,輸入 http://localhost:9411/,開啟 zipkin (分散式追蹤系統),來取得相關資訊: