当前位置: 首页 > wzjs >正文

临沂经开区建设局网站苏州网页开发公司

临沂经开区建设局网站,苏州网页开发公司,网站营销工具,网站建设成功案例怎么写目录 领域事件的实现选择 实现方式1:C#的事件机制 实现方式2:进程内消息传递的开源库MediatR。 MediatR用法 注意 领域事件的实现选择 实现方式1:C#的事件机制 缺点:需要显式地注册。 var bl new ProcessBusinessLogic()…

目录

领域事件的实现选择

实现方式1:C#的事件机制

实现方式2:进程内消息传递的开源库MediatR。

MediatR用法

注意


领域事件的实现选择

实现方式1:C#的事件机制

缺点:需要显式地注册。

var bl = new ProcessBusinessLogic();
bl.ProcessCompleted += bl_ProcessCompleted;
bl.StartProcess();

实现方式2:进程内消息传递的开源库MediatR。

事件的发布和事件的处理之间解耦。MediatR中支持“一个发布者对应一个处理者”和“一个发布者对应多个处理者”这两种模式。

MediatR用法
  1. NuGet:MediatR
  2. Program.cs中调用AddMediatR()
    builder.Services.AddMediatR(cfg =>
    {cfg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly());
    });
  3. 定义一个在消息的发布者和处理者之间进行数据传递的类,这个类需要实现INotification接口。一般用record类型。
    public record PostNotification(string Body) : INotification;
  4. 消息的处理者要实现NotificationHandler<TNotification>接口,其中的泛型参数TNotification代表此消息处理者要处理的消息类型。
    public class PostNotifHandler1 : NotificationHandler<PostNotification>
    {protected override void Handle(PostNotification notification){Console.WriteLine("111"+notification.Body);}
    }
  5. 在需要发布消息的的类中注入IMediator类型的服务,然后我们调用Publish方法来发布消息。Send()方法是用来发布一对一消息的,而Publish()方法是用来发布一对多消息的。
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class DemoController : ControllerBase
    {private readonly IMediator mediator;public DemoController(IMediator mediator){this.mediator = mediator;}[HttpGet]public ActionResult Get(){await mediator.Publish(new PostNotification("你好呀" + DateTime.Now));return Ok();}
    }
注意

如果使用await来调用Publish,程序会等待所有事件处理者的Handle方法执行完成才继续向后执行,因此事件发布者和事件处理者的代码是运行在相同的调用堆栈中的,这样可以轻松实现强一致性的事务。如果不需要等待事件处理者的执行,可以不使用await来在调用Publish;即使使用await调用Publish发布事件,如果某个事件处理者的代码执行太耗时,为避免影响用户体验,可以在事件处理者的Handle方法中异步执行事件的处理逻辑。如果不等待事件处理者,就要处理事务的最终一致性。

http://www.dtcms.com/wzjs/582765.html

相关文章:

  • 网站建设需求确认表优秀的浏览器主页
  • 郑州专业公司网站制作公司定制网站制作公司
  • 网站建设规划书百度文库图片做多的网站是哪个
  • 专门做鞋子的网站有哪些推广普通话文字内容
  • 芜湖网站优化公司推广网站注册赚佣金
  • 淘宝不能发布网站开发了北京网站设计的公司
  • 金坛网站制作网站增加外链的方法有哪些
  • 免费网站教程太原网站建设制作报价
  • 做国内打不开的网站吗免费素材大全视频
  • 推荐几个没封的正能量网站上海代理注册公司
  • 聊城网站设计如何开发一个微信公众号
  • 一家专门做特产的网站如何自己做网站及优化
  • 企业资质查询官方网站电商网站报价
  • WordPress分段插件手机优化
  • 旅游seo整站优化企业网站如何做网警备案
  • 网站备案与域名备案加强网站功能建设
  • 全网营销型网站建设模板酒店网站设计的目的和意义
  • 学做网站论坛vip学员码网站设计 卡片式设计
  • 学生个人博客网站模板中国宁波网手机首页
  • 台州企业网站制作公司织梦网站建设选项卡教程
  • 房地产网站 模板wordpress顶部菜单怎么删
  • 个人网站 jsp 域名空间ppt公司简介模板
  • iis 网站名c 做网站开发
  • 吉林房地产网站开发个人电影网站备案
  • 云一网站公司wordpress后台打开超级慢
  • 网站开发公司模板拟定一个物流网站建设方案
  • 个人网站搭建wordpress广东建设信息网手机版
  • 临海响应式网站设计重庆seo入门教程
  • wordpress禁止响应重庆网站建设及优化
  • 湘潭知名网站建设河南网站建设企业