手把手教你学Dapr - 1. .Net开发者的大时代
手把手教你学Dapr - 2. 必须知道的概念
手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序
手把手教你学Dapr - 4. 服务调用
手把手教你学Dapr - 5. 状态管理
手把手教你学Dapr - 6. 发布订阅
手把手教你学Dapr - 7. Actors
手把手教你学Dapr - 8. 绑定
使用绑定,您可以使用来自外部系统的事件触发您的应用程序,或与外部系统交互。这个构建块为您和您的代码提供了几个好处:
输入绑定用于在发生来自外部资源的事件时触发您的应用程序。可选的payload
和元数据
可以与请求一起发送。
为了从输入绑定接收事件:
输出绑定允许您调用外部资源。可选的payload
和元数据
可以与请求一起发送。
为了调用输出绑定:
payload
的绑定使用绑定,你的代码可以被来自不同资源的传入事件触发,这些资源可以是任何东西:队列、消息传递管道、云服务、文件系统等。
这对于事件驱动处理、数据管道或只是对事件做出一般反应并进行进一步处理是理想的。
Dapr 绑定允许您:
目前Dapr还不支持跨Dapr互调用,而
yaron
给出的解决方案之一就是绑定
目前绑定支持40中组件,包括Aliyun、Azure、AWS等多家云服务厂商的产品,也包括常见的如Cron
, kafka
, MQTT
, SMTP
, Redis
以及各种MQ等。
以下图片是.Net Dapr官方教程里的一个示例
本篇文章将用rabbitmq
来演示(为什么不用redis,因为redis翻车了,只支持output,没注意看supported),如前几篇文章所说,先配置yaml
安装rabbitmq
docker pull rabbitmq:3.8.25-management
运行rabbitmq
docker run -d --hostname rabbitMQ --name my-rabbitMQ -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin rabbitmq:3.8.25-management
Windows打开目录%USERPROFILE%\.dapr\components
,创建binding.yaml
,内容如下
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: myevent
namespace: default
spec:
type: bindings.rabbitmq
version: v1
metadata:
- name: queueName
value: queue1
- name: host
value: amqp://admin:admin@localhost:5672
- name: durable
value: true
- name: deleteWhenUnused
value: false
- name: ttlInSeconds
value: 60
- name: prefetchCount
value: 0
- name: exclusive
value: false
- name: maxPriority
value: 5
打开浏览器,输入url:http://localhost:15672/
,账号密码为admin,查看rabbitmq已经正常运行
创建类库
项目,并添加Dapr.Actors.AspNetCore
NuGet包引用和Assignment.Shared
项目引用,最后修改程序端口为5000。
修改program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/myevent", ([Microsoft.AspNetCore.Mvc.FromBody] string word) => Console.WriteLine($"Hello {word}!"));
app.Run();
注
:一定要用POST
Method,参数记得在Body里面。默认Url与bindings的name对应。能改路由吗?当然能,看下面配置
spec:
type: binding.rabbitmq
metadata:
- name: route
value: /onevent
使用Dapr CLI来启动,先使用命令行工具跳转到目录 dapr-study-room\Assignment07\Assignment.Server
,然后执行下面命令
dapr run --app-id testbinding --app-port 5000 --dapr-http-port 3500 --dapr-grpc-port 50001 dotnet run
打开浏览器,输入url:http://localhost:15672/#/queues
,账号密码为admin,查看是否已经创建一个名为queue1
的队列,如下图所示:
创建控制台
项目,并添加Dapr.Actors
NuGet包引用和Assignment.Shared
项目引用。
修改Program.cs
using Dapr.Client;
var client = new DaprClientBuilder().Build();
await client.InvokeBindingAsync("myevent", "create", "World");
Console.WriteLine("Binding sent.");
使用Dapr CLI来启动,先使用命令行工具跳转到目录 dapr-study-room\Assignment07\Assignment.Client
,然后执行下面命令
dotnet run
Assignment08
https://github.com/doddgu/dapr-study-room
我们的目标是自由的
、易用的
、可塑性强的
、功能丰富的
、健壮的
。
所以我们借鉴Building blocks的设计理念,正在做一个新的框架MASA Framework
,它有哪些特点呢?
经过几个月的生产项目实践,已完成POC,目前正在把之前的积累重构到新的开源项目中
目前源码已开始同步到Github(文档站点在规划中,会慢慢完善起来):
MASA.BuildingBlocks
MASA.Contrib
MASA.Utils
MASA.EShop
BlazorComponent
MASA.Blazor
QQ群:7424099
微信群:加技术运营微信(MasaStackTechOps),备注来意,邀请进群
s)
MASA.EShop
BlazorComponent
MASA.Blazor
QQ群:7424099
微信群:加技术运营微信(MasaStackTechOps),备注来意,邀请进群