Dapr项目应用探索

背景介绍

 前面文章对Dapr的基本信息进行了学习,接下来尝试将Dapr应用相关应用中。

 接下来一步步实现应用dapr功能。

一、预期效果

 0b53e0e79534b292f0670fa2f947a9bb.png

 如上图应用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中查看添加的组件:

  549fd47c5478bc7deeca737548a5d36e.png

   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、业务系统调用服务成功:

  模拟运行业务系统:

  5d49a9209fd8cbf5f36df28f226db1d5.png

 3、统一数据源应用修改后报表服务同步更新:

  a) 在UDS中修改数据:

  f6453c8a46595a4319257a1f64d02669.png

  b) 在报表服务中,得到binding响应数据

  bf1ad642c0b9f514da3d6e1143d3eac6.png

 4、查看zipkin调用记录

  77a938335862b8856904399a22fb12da.png

四、总结

  本次已初步把dapr相关绑定、服务调用应用到了项目中;接下来进一步对秘钥存储进一步应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么当代人越来越不快乐?

全世界只有3.14 % 的人关注了爆炸吧知识小时候哭着哭着就笑了&#xff0c;长大后笑着笑着就哭了。生活不易&#xff0c;成年人叹气&#xff0c;房租水费&#xff0c;学习压力、工作不如意...各种无形的压力&#xff0c;压得人喘不过气。如果一绷得太紧&#xff0c;再坚韧的弦也…

解读C#正则表达式

为什么80%的码农都做不了架构师&#xff1f;>>> 多少年来&#xff0c;许多的编程语言和工具都包含对正则表达式的支持&#xff0c;.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类&#xff0c;而且它们也都与未来的Perl 5中的规则表达式兼…

iphone换机数据迁移_iPhone迁移数据到Android(相册与短信)

2020年09月20日前言&#xff1a;卖掉iPhone7暂时回到Android手机&#xff0c;然后需要将iPhone内的资料迁移到新手机中。我尽量不使用第三方工具实现迁移工作。一般新手机都会有迁移助手&#xff0c;但是都不完美&#xff0c;毕竟是两个不同手机系统&#xff0c;很多东西还是需…

使用 dotnet-outdated 维护项目 nuget 包版本

使用 dotnet-outdated 维护项目 nuget 包版本Intro我们项目中或多或少都会有一些 NuGet 包&#xff0c;使用到 NuGet 包时&#xff0c;如何保证我们的 NuGet 包不会太旧呢&#xff1f;我们可以借助 dotnet-outdated 来检查项目中的 NuGet 包是否有更新Sample首先我们需要执行 d…

被一帮小姐姐围着是什么感觉?

1 阿姨&#xff1a;我靠灵魂呼吸...▼2 医学院护理班男生的日常▼3 嫌自己活太久了&#xff1f;▼4 看来还是作业太少了▼5 小孟老师&#xff0c;您妈&#xff01;▼6 哈哈哈哈哈&#xff0c;不行了...▼7 他今天是不会跟你走的&#xff01;&#xff01;&#xff01;▼8 …

仓库处理中 无法修改_上海电商仓储物流公司,冷链仓库-上海玖日仓储

首页 > 新闻列表 > 浏览文章发布时间&#xff1a;2020-10-21 15:03:33 浏览量&#xff1a; 4导读&#xff1a;上海玖日仓储为您提供上海电商仓储物流公司,冷链仓库的相关知识与详情&#xff1a; 货物出入库扫描功能&#xff0c;同时记录扫描时间&#xff1b;完善订单与仓…

13 个 C# 10 特性

常量的内插字符串C# 10 允许使用在常量字符串初始化中使用插值, 如下const string name "Oleg"; const string greeting $"Hello, {name}.";Console.WriteLine(greeting); // Output: Hello, Oleg.扩展属性模式从 C# 10 开始&#xff0c;您可以在适当的模…

android studio button位置_免费的Android开发环境

Android Studio for mac是一个全面的Android开发环境&#xff0c;Android Studio帮助您设计&#xff0c;构建&#xff0c;测试和调试Android应用程序&#xff0c;利用Android Studio所有特色工具并开发出令人惊叹的应用程序。Android Studio是一个为Android平台开发程序的集成开…

TCP握手/挥手的过程分析

TCP连接建立 在TCP/IP协议中&#xff0c;TCP协议提供可靠的连接服务&#xff0c;采用三次握手建立一个连接。 服务器必须准备好接受外来的连接。这通过调用socket、 bind和listen函数来完成&#xff0c;称为被动打开(passive open)。 第一次握手&#xff1a;客户通过调用connec…

Android数据库Realm实践

Android开发中常用的数据库有5个&#xff1a; 1. OrmLite OrmLite 不是 Android 平台专用的ORM框架&#xff0c;它是Java ORM。支持JDBC连接&#xff0c;Spring以及Android平台。语法中广泛使用了注解&#xff08;Annotation&#xff09;。 2. SugarORM SugarORM 是 Android …

TCP协议中的三次握手和四次挥手(图解)

建立TCP需要三次握手才能建立&#xff0c;而断开连接则需要四次握手。整个过程如下图所示&#xff1a; 先来看看如何建立连接的。 首先Client端发送连接请求报文&#xff0c;Server段接受连接后回复ACK报文&#xff0c;并为这次连接分配资源。Client端接收到ACK报文后也向Serv…

java 矩阵题目_java练习本(原每日一练)(20190517)

名人名言昨日翻译“You will face many defeats in life, but never let yourself be defeated.”——Maya Angelou“你将在生活中面临许多失败&#xff0c;但决不让自己被打败。”——玛雅安吉罗今日名言“May you live all the days of your life.”——Jonathan Swift2019.0…

(转)直接拿来用!最火的iOS开源项目(一)

2019独角兽企业重金招聘Python工程师标准>>> 1. AFNetworking 在众多iOS开源项目中&#xff0c;AFNetworking可以称得上是最受开发者欢迎的库项目。AFNetworking是一个轻量级的iOS、Mac OS X网络通信类库&#xff0c;现在是GitHub上第三大Objective-C库。它建立在N…

.NET+Sqlite如何支持加密

点击上方蓝字关注我们.NETSqlite如何支持加密SqliteSQLite 来源于公共领域 SQLite Is Public Domain、确保代码不会受到任何专有或许可内容的污染&#xff0c;没有任何来自互联网上的未知来源复制。即全是原创的。虽然是免费的&#xff0c;无需许可证&#xff0c;可用于任何目的…

linux之scp命令

svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令&#xff0b;scp命令详解 名称&#xff1a;cp 使用权限&#xff1a;所有使用者 使用方式&#xff1a; cp [options] source dest cp [options] source... directory 说明&#xff1a…

裸奔、抽烟、凡尔赛,原来数学家玩得这么野……

全世界只有3.14 % 的人关注了爆炸吧知识六个数学家一部数学史假如宇宙真的由神明设计那他一定是个数学家数学就是他描绘自然的语言数学的重要性已经不用多说但是很多人仍觉得数学是高冷的女神其实数学神奇却并不神秘高贵却并不高冷因为有一群智者早就用他们的智慧和精力将那些晦…

foreach循环符合就不往下走了_柴油发电机组冷却液循环故障解决方法

点击上方蓝字了解更多精彩柴油发电机组冷却液循环故障是发电机组的常见故障之一&#xff01;下面给大家介绍一下针对循环故障做出的排查解决。1、柴油发电机组水泵故障。首先我们要先检查水泵作用是否良好&#xff0c;要是发现水泵传动齿轴磨损过限时&#xff0c;说明水泵已失去…

java web移植 遇到Project facet Java version 1.7 is not supported

2019独角兽企业重金招聘Python工程师标准>>> 在移植eclipse项目时&#xff0c;如果遇到 “Project facet Java version 1.7 is not supported.” 项目中的jdk1.7不支持。说明项目是其他版本jdk编译的&#xff0c;在eclipse里运行时会报版本不支持。 解决办法: 法1&a…