微軟微服務構建框架Dapr基礎入門教學

2023-11-03 21:08:28

最近學習dapr,決定將過程在此記錄,也為小夥伴們學習的時候提供一份參考。

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的基礎入門就介紹到這裡,後續的訂閱/釋出及其他功能,如有時間,我會繼續補充。

  本人也是小白剛剛入門,如有理解或者操作不對的地方,煩請朋友們指正。