【库】Coravel Event Broadcasting事件广播
Coravel 通过使高级应用程序功能(如任务/作业调度、排队、缓存、邮件(以及更多!))易于访问且易于使用,帮助开发人员快速启动并运行 .NET 应用程序。具有简单、富有表现力和直接的语法。
Coravel引入一个广播事件机制,可以通过简单的事件注册,事件订阅,完成一个广播。下面是一个修改密码的功能,修改成功后可以通过站内通知和邮件两种方式通知用户修改密码成功。
using Coravel; using Coravel.Events.Interfaces; using Microsoft.AspNetCore.Mvc; using System.Xml.Linq; var builder = WebApplication.CreateBuilder(args); //注入相关的服务 builder.Services.AddEvents(); builder.Services.AddTransient<UserService>(); builder.Services.AddTransient<MessageNotify>(); builder.Services.AddTransient<EmailNotify>(); var app = builder.Build(); //注册事w年,订阅事件 var registration = app.Services.ConfigureEvents(); registration .Register<UserChangePassword>() .Subscribe<MessageNotify>() .Subscribe<EmailNotify>(); app.MapPost("/changepassword", async ([FromServices] UserService userService, [FromBody] UserChangePassword changePassword) => { return await userService.ChangePassword(changePassword); }); app.Run(); public class UserChangePassword: IEvent { public string Name { get; set; } public string UserName { get; set; } public string NewPassword1 { get; set; } public string NewPassword2 { get; set; } public string OldPassword { get; set; } } public class UserService { readonly IDispatcher _dispatcher; public UserService(IDispatcher dispatcher) { _dispatcher = dispatcher; } public async Task<bool> ChangePassword(UserChangePassword changePassword) { //验证两个新密码是否相等,旧密码是否正确 //持久化修改密码 //修改密码成功后,进行广播事件 await _dispatcher.Broadcast(changePassword); return true; } } public class MessageNotify : IListener<UserChangePassword> { public async Task HandleAsync(UserChangePassword changePassword) { Console.WriteLine($"{changePassword.Name}您好,你于{DateTime.Now.ToString("yyyy年MM月dd日HH时mm分")}进行了修改密码!"); await Task.CompletedTask; } } public class EmailNotify : IListener<UserChangePassword> { public async Task HandleAsync(UserChangePassword changePassword) { Console.WriteLine($"{changePassword.Name}您好:\r\n这是一封通知你修改密码的邮件!"); await Task.CompletedTask; } }
Coravel主打一个简单,通过事件发布与订阅,优雅地解耦了不同的功能,并且还为后期增加订阅方式提供了可能。
文章来源微信公众号
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示