手把手教你学 Dapr - 8. 绑定
目录
手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序
介绍
使用绑定,您可以使用来自外部系统的事件触发您的应用程序,或与外部系统交互。这个构建块为您和您的代码提供了几个好处:
消除连接和轮询消息系统(如队列和消息总线)的复杂性
关注业务逻辑,而不是如何与系统交互的实现细节
让您的代码不受 SDK 或库的影响
处理重试和故障恢复
运行时在绑定之间切换
构建可移植的应用程序,其中设置了特定于环境的绑定,不需要更改代码
输入绑定
输入绑定用于在发生来自外部资源的事件时触发您的应用程序。可选的payload
和元数据
可以与请求一起发送。
为了从输入绑定接收事件:
定义描述绑定类型及其元数据(连接信息等)的组件 YAML
侦听传入事件的 HTTP 端点,或使用 gRPC proto 库获取传入事件
输出绑定
输出绑定允许您调用外部资源。可选的payload
和元数据
可以与请求一起发送。
为了调用输出绑定:
定义描述绑定类型及其元数据(连接信息等)的组件 YAML
使用 HTTP 或 gRPC 方法调用具有可选
payload
的绑定
使用场景
使用绑定,你的代码可以被来自不同资源的传入事件触发,这些资源可以是任何东西:队列、消息传递管道、云服务、文件系统等。
这对于事件驱动处理、数据管道或只是对事件做出一般反应并进行进一步处理是理想的。
Dapr 绑定允许您:
在不包含特定 SDK 或库的情况下接收事件
在不更改代码的情况下替换绑定
专注于业务逻辑而不是事件资源实现
目前 Dapr 还不支持跨 Dapr 互调用,而
yaron
给出的解决方案之一就是绑定
目前绑定支持 40 中组件,包括 Aliyun、Azure、AWS 等多家云服务厂商的产品,也包括常见的如Cron
, kafka
, MQTT
, SMTP
, Redis
以及各种 MQ 等。
以下图片是.Net Dapr 官方教程里的一个示例
配置组件
本篇文章将用rabbitmq
来演示(为什么不用 redis,因为 redis 翻车了,只支持 output,没注意看 supported),如前几篇文章所说,先配置 yaml
安装
rabbitmq
运行
rabbitmq
Windows 打开目录
%USERPROFILE%\.dapr\components
,创建binding.yaml
,内容如下
打开浏览器,输入 url:
http://localhost:15672/
,账号密码为 admin,查看 rabbitmq 已经正常运行
.Net 调用 Dapr 的绑定
创建 Assignment.Server
创建类库
项目,并添加Dapr.Actors.AspNetCore
NuGet 包引用和Assignment.Shared
项目引用,最后修改程序端口为 5000。
修改 program.cs
注
:一定要用POST
Method,参数记得在 Body 里面。默认 Url 与 bindings 的 name 对应。能改路由吗?当然能,看下面配置
运行 Assignment.Server
使用 Dapr CLI 来启动,先使用命令行工具跳转到目录 dapr-study-room\Assignment07\Assignment.Server
,然后执行下面命令
验证服务端绑定配置是否成功
打开浏览器,输入 url:http://localhost:15672/#/queues
,账号密码为 admin,查看是否已经创建一个名为queue1
的队列,如下图所示:
创建 Assignment.Client
创建控制台
项目,并添加Dapr.Actors
NuGet 包引用和Assignment.Shared
项目引用。
修改 Program.cs
运行 Assignment.Client
使用 Dapr CLI 来启动,先使用命令行工具跳转到目录 dapr-study-room\Assignment07\Assignment.Client
,然后执行下面命令
本章源码
Assignment08
https://github.com/doddgu/dapr-study-room
我们正在行动,新的框架、新的生态
我们的目标是自由的
、易用的
、可塑性强的
、功能丰富的
、健壮的
。
所以我们借鉴 Building blocks 的设计理念,正在做一个新的框架MASA Framework
,它有哪些特点呢?
原生支持 Dapr,且允许将 Dapr 替换成传统通信方式
架构不限,单体应用、SOA、微服务都支持
支持.Net 原生框架,降低学习负担,除特定领域必须引入的概念,坚持不造新轮子
丰富的生态支持,除了框架以外还有组件库、权限中心、配置中心、故障排查中心、报警中心等一系列产品
核心代码库的单元测试覆盖率 90%+
开源、免费、社区驱动
还有什么?我们在等你,一起来讨论
经过几个月的生产项目实践,已完成 POC,目前正在把之前的积累重构到新的开源项目中
目前源码已开始同步到 Github(文档站点在规划中,会慢慢完善起来):
QQ 群:7424099
微信群:加技术运营微信(MasaStackTechOps),备注来意,邀请进群
MASA 技术团队:(鬼谷子)
版权声明: 本文为 InfoQ 作者【MASA技术团队】的原创文章。
原文链接:【http://xie.infoq.cn/article/b55c5fbb2dc78434482f17867】。文章转载请联系作者。
评论