最近學習dapr,決定將過程在此記錄,也為小夥伴們學習的時候提供一份參考。
Dapr的介紹這裡就不多說了,大家直接可以去百度或者去官網上進行查閱,本文就簡單介紹下如何使用。
一、安裝Dapr CLI
選擇與您使用的系統對應的安裝方式即可,我這裡使用的是windows系統,故使用windows系統做示例。
1. 線上安裝,使用管理員許可權開啟cmd,直接將一下命令貼上進去執行就可以了(命令中的連結可能根據您的網路不同而出現連不上的情況,如果連不上,請使用第二種方式)。
powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
2. 離線安裝,將github中對應的軟體包下載並安裝就可以了。github地址
3. 安裝完成,在cmd輸入dapr,如果出現以下結果,就說明安裝成功,可以進行下一步了。
二、本地初始化Dapr(安裝dapr自帶的中介軟體)。
1. 使用前請安裝docker
2. 在cmd中輸入命令dapr init,等待進行初始化(過程較慢,因為要拉取中介軟體的docker映像)
3. 驗證dapr版本。輸入 dapr --version 檢視當前dapr版本,如圖
4.驗證docker容器的執行情況,如圖
5. 驗證元件目錄已初始化,cmd中輸入 explorer "%USERPROFILE%\.dapr\" ,如出現以下彈窗,則成功,如圖
三、在程式碼中使用dapr
1. 新建一個webapi專案,如圖
2. 稍作修改(不改也可,比較符合自身習慣)
3. 生成一下專案,並在cmd中進入生成以後的專案的根目錄,如圖
4. cmd中輸入命令
dapr run --app-id cart --app-port 5000 dotnet dapr.serv.one.dll
dapr run表示啟動dapr服務
app-id表示服務id
app-port表示服務埠(推薦app-port和服務中的埠設為一致)
donet dapr.serv.one.dll 表示啟動asp.net core程式的命令
如圖,表示成功啟動
5. 接下來,我們使用dapr的方式,來進行服務呼叫
新建空控制檯專案,並將dapr.serv.one中的WeatherForecast類複製到本專案中,在nuget中安裝 Dapr.Client 類庫和 Newtonsoft.Json 類庫。
開始呼叫,如圖
使用DaprClient呼叫的方式
使用HttpClient的呼叫方式
以下為圖中程式碼:
using Dapr.Client; using Newtonsoft.Json; namespace ConsoleApp3 { internal class Program { static void Main(string[] args) { var result = DaprTest().Result ?? new List<WeatherForecast>(); Console.WriteLine(JsonConvert.SerializeObject(result)); } public static async Task<IEnumerable<WeatherForecast>?> DaprTest() { var daprClient = new DaprClientBuilder().Build(); return await daprClient.InvokeMethodAsync<IEnumerable<WeatherForecast>>(HttpMethod.Get, "cart", "WeatherForecast/GetWeatherForecast"); } } }
using Dapr.Client; using Newtonsoft.Json; using System.Net.Http.Json; namespace ConsoleApp3 { internal class Program { static void Main(string[] args) { var result = DaprTest().Result ?? new List<WeatherForecast>(); Console.WriteLine(JsonConvert.SerializeObject(result)); } public static async Task<IEnumerable<WeatherForecast>?> DaprTest() { var httpClient = DaprClient.CreateInvokeHttpClient(daprEndpoint: "http://localhost:51323", appId: "cart"); return await httpClient.GetFromJsonAsync<IEnumerable<WeatherForecast>>("WeatherForecast/GetWeatherForecast"); } } }
其中,daprEndpoint中的埠,要設定為dapr服務啟動成功後給出的埠地址,而不是app地址,否則呼叫服務的時候呼叫不到。WeatherForecast/GetWeatherForecast 則表示服務的具體路徑。
結果如下:
好了,dapr的基礎入門就介紹到這裡,後續的訂閱/釋出及其他功能,如有時間,我會繼續補充。
本人也是小白剛剛入門,如有理解或者操作不對的地方,煩請朋友們指正。