背景介绍

 前面文章对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.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相关绑定、服务调用应用到了项目中;接下来进一步对秘钥存储进一步应用。

Dapr项目应用探索相关推荐

  1. 火影推荐程序连载14-Vue开源项目使用探索

    前言 本文记录一次使用Vue开源项目的过程. 寻找Vue开源项目 要使用Vue开源项目就必须先找到一个,我们去Github上搜索[后台],然后使用Vue分类进行检索,找到排名第一的开源框架 然后新建一 ...

  2. 云原生 | 阿里巴巴的Dapr实践与探索

    [Dapr]| 原文/敖小剑,翻译/Edison 本文原文来自Dapr Blog,作者阿里云高级技术专家敖小剑.本文是我根据自己的理解翻译了其中的一部分并加了一些参考文献中的内容,所以并非完整翻译,点 ...

  3. Azure DevOps 中 Dapr项目自动部署流程实践

    注:本文中主要讨论 .NET6.0项目在 k8s 中运行的 Dapr 的持续集成流程, 但实际上不是Dapr的项目部署到K8s也是相同流程,只是k8s的yaml配置文件有所不同 流程选择 基于 Dap ...

  4. 环宇成功签约世界级海外文旅夜游项目,探索夜游新模式!

    日前,环宇文化科技成功签约世界级文旅夜游项目,坐标越南! 作为东南亚健康且富有朝气的新兴旅游胜地,越南具备得天独厚的自然和人文旅游资源,被世界许多知名旅游网站和杂志纳入东南亚最佳旅游目的地之一,也是& ...

  5. 项目三 探索并利用漏洞对未知web server权限提升(CTF实战 Kioptrix#2靶机渗透测试)

    大家好,我是SuieKa.此是实训项目三,要求根据未知靶机(Kioptrix#2)探索漏洞,并利用漏洞进行权限提升实验项目,希望对朋友们有所帮助. 树 一.神器开路,对未知操作系统的全面扫描 1.SQ ...

  6. 打造特色文化夜游项目及探索科技创新

    近几年来,国内文化旅游业发展迅速,在数字化战略的背景下,目前旅游业已进入科技驱动文化发展的新时代.通过技术的创新,产品形式的更新和商业模式的创新,赋予产业更高质量的发展.在此基础上,伴随着夜间经济和全 ...

  7. 项目三探索 TMDb 电影数据

  8. 开源 1 年半 star 破 1.2 万的 Dapr 是如何在阿里落地的?

    作者 | 敖小剑 来源 | 阿里巴巴云原生公众号 Dapr 是 2019 年 10 月微软开源的可移植.事件驱动分布式运行时,它使开发人员能够轻松地构建运行在云平台和边缘的弹性而微服务化的无状态和有状 ...

  9. Dapr 在阿里云原生的实践

    简介:Faas 场景下,比较吸引用户的是成本和研发效率,成本主要通过按需分配和极致的弹性效率来达成.而应用开发者期望通过 FaaS 提供多语言的编程环境,提升研发效率,包括启动时间.发布时间.开发的效 ...

最新文章

  1. Vue 环境搭建(win10)
  2. python列表--查找集合中重复元素的个数
  3. 自助用户选择VM Network
  4. [YTU]_2354 (实现复数类中的加运算符重载【C++运算符重载】)
  5. 洛谷 P3368 【模板】树状数组 2
  6. 手机outlook刷新不出邮件_网页端Outlook推Spaces功能:轻松整合邮件、会议和文档...
  7. Matlab数理统计工具箱应用简介
  8. Java求数组元素的最大和最小值
  9. 华为机试——质数因子
  10. 在uipath_UiPath狂欢节Day 3——国内超级企业CFO大咖RPA案例分享!
  11. ASP.NET 2.0 – 善用DataSourceMode属性 (转自章立民CnBlogs)
  12. 22道接口测试面试题答案。
  13. 为开发者们准备的10款超棒的jQuery视频插件
  14. Akka 指南 之「集群分片」
  15. c4d软件安装上打开不了_Mac安装软件问题,“xxx”已损坏,无法打开
  16. linux系统查看ssh是否开启,linux查看与开启ssh
  17. GitHub下载代理设置
  18. python笔记-05(条件、循环及其他语句)
  19. Excel中文本换行
  20. windows如何配置环境变量

热门文章

  1. spring mvc 入门配置
  2. Oracle to_char() to_date() to_number()函数
  3. Windows下的HEAP溢出及其利用
  4. 2018-10-03-Python全栈开发-day60-django序列化-part3
  5. ActiveMQ在windows下启动失败解决方案
  6. 移动端手指操控左右滑动的菜单
  7. el表达式 if 和 if else 的写法
  8. 大型网站技术架构:核心原理与案例分析笔记
  9. Xmemcached学习笔记一(安装memcached)
  10. 基于netty的微服务架构