Dapr項目應用探索


背景介紹

 前面文章對Dapr的基本信息進行了學習,接下來嘗試將Dapr應用相關應用中。

 接下來一步步實現應用dapr功能。

一、預期效果

 

 如上圖應用Dapr點包含

  a) 報表服務綁定統一數據源服務:接受更新通知
  b) 業務系統調用報表操作:采用Dapr方式

 二、Dapr應用:

  • 綁定統一數據源:更新通知:

  a) dapr創建綁定處理組件:(http調用接口->放到\.dapr\components目錄)

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: uds
spec:
  type: bindings.http
  version: v1
  metadata:
  - name: url
    value: http://127.0.0.1:8230/BindingInvoke/InvkeBind

  在Dashboard中查看添加的組件:

  

   b) 在統一數據源中數據變化時,調用執行binding方法:

//執行綁定:對應綁定的名稱:uds
_daprClient.InvokeBindingAsync<dynamic>("uds", "post", new { data = apps, type = refCache3 ? 3 : 1 });

   c) 在報表服務中提供對應服務:

[Route("api/[controller]/")]
[ApiController]
public class BindingInvokeController : ControllerBase
{
    [Route("InvkeBind")]
    [HttpPost]
    public IActionResult InvkeBind([FromBody] InvokeBindDto invokeBindDto)
    {
        Console.WriteLine(JsonConvert.SerializeObject(invokeBindDto));
        return new JsonResult(invokeBindDto);
    }
}
public class InvokeBindDto
{
    public object data { get; set; }
    public int type { get; set; }
}
  • 業務系統:服務調用:

  a) 引用Nuget包:Dapr.Client

//Dapr.Client 直接創建
Install-Package Dapr.Client
//Dapr.AspNetCore 依賴注入
Install-Package Dapr.AspNetCore

  b) 創建DaprClient對象:

    • 注入方式:
//Startup 
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers().AddDapr();
    //……
}

//依賴注入:DaprClient 
private readonly ILogger<BindingController> _logger;
private readonly DaprClient _daprClient;
public BindingController(ILogger<BindingController> logger, DaprClient daprClient)
{
    _logger = logger;
    _daprClient = daprClient;
}
    • 創建方式:
Dapr.Client.DaprClientBuilder daprClientBuilder = new Dapr.Client.DaprClientBuilder();
var daprClient = daprClientBuilder.Build();

  c) 調用報表服務接口:

Dapr.Client.DaprClientBuilder daprClientBuilder = new Dapr.Client.DaprClientBuilder();
var daprClient = daprClientBuilder.Build();
var obj = daprClient.InvokeMethodAsync<dynamic>(HttpMethod.Get, "rpts", "api/Run/GetRptParametersByRptId").Result; Console.WriteLine("Dapr調用報表服務(GET)結果:" + System.Text.Json.JsonSerializer.Serialize(obj)); //Post dynamic data = new { rptId = "c34f45f5-e075-9559-44dc-915886c4bde5", rptPars = new { }, rptStaticPars = new { 人員姓名 = "admin", 人員編碼 = "admin" }, logLevel = 0 }; var task = daprClient.InvokeMethodAsync<dynamic, dynamic>(HttpMethod.Post, "rpts", "api/Run/ExecDynamicRptByRptId", data); obj = task.Result; Console.WriteLine("Dapr調用報表服務(POST)結果:" + System.Text.Json.JsonSerializer.Serialize(obj)); 

三、效果:

 1、啟動dapr服務:

//啟動統一數據源:
dapr run --app-id uds --app-port 8220 --dapr-http-port 3500 dotnet UDS.Host.dll
//啟動報表服務
dapr run --app-id rpts --app-port 8230 --dapr-http-port 3501 dotnet ZLRPTS.Web.Host.dll

 2、業務系統調用服務成功:

  模擬運行業務系統:

  

 3、統一數據源應用修改后報表服務同步更新:

  a) 在UDS中修改數據:

  

  b) 在報表服務中,得到binding響應數據

  

 

 4、查看zipkin調用記錄

  

四、總結

  本次已初步把dapr相關綁定、服務調用應用到了項目中;接下來進一步對秘鑰存儲進一步應用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM