网站风格设计视觉,记录网站 自己做,h5视频网站模板,网站备案没公司名称背景介绍前面文章对Dapr的基本信息进行了学习#xff0c;接下来尝试将Dapr应用相关应用中。接下来一步步实现应用dapr功能。一、预期效果如上图应用Dapr点包含#xff1a;a) 报表服务绑定统一数据源服务#xff1a;接受更新通知 b) 业务系统调用报表操作:采用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.httpversion: v1metadata:- name: urlvalue: http://127.0.0.1:8230/BindingInvoke/InvkeBind 在Dashboard中查看添加的组件 b) 在统一数据源中数据变化时调用执行binding方法//执行绑定对应绑定的名称uds
_daprClient.InvokeBindingAsyncdynamic(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 ILoggerBindingController _logger;
private readonly DaprClient _daprClient;
public BindingController(ILoggerBindingController 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.InvokeMethodAsyncdynamic(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.InvokeMethodAsyncdynamic, 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相关绑定、服务调用应用到了项目中接下来进一步对秘钥存储进一步应用。