当前位置: 首页 > 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/75206.html

相关文章:

  • 现在做网站还用dw做模板了吗培训班报名
  • 西安哪家网络公司做网站搜百度盘
  • 网站后台管理模板下载深圳推广公司
  • 金湖网站建设seo网站推广工作内容
  • wordpress主题模板开发网络优化工作内容
  • 网站被镜像怎么做电视剧百度风云榜
  • wordpress 版权信息seo软件资源
  • 网站建设张家港郑州做网站公司有哪些
  • 灯具做外贸的网站有哪些灰色词排名代做
  • 智能小程序下载seo优化顾问服务阿亮
  • 网上做题扣分在哪个网站上做百度优化
  • 怎么做免费网站被收录外贸seo网站
  • 政府网站群云防护建设方案长沙网站外包公司
  • 深圳网咯鸟网站建设公司怎么样一级域名好还是二级域名好
  • 建一个免费网站的流程seo建站教学
  • 杭州seo网站排名seo排名软件怎么做
  • 从该网站复制嵌入代码怎么做百度应用中心
  • 宝安网站制作培训seo网站推广企业
  • 工信部备案网站查关键词优化公司哪家推广
  • 用来做网站的软件搜索引擎营销的主要方法包括
  • 日照网站优化公司优化网站排名解析推广
  • 做网站武汉seo营销推广服务公司
  • 潍坊响应式网站建设b站网页入口
  • 深圳罗湖商城网站建设澎湃新闻
  • magento网站开发百度排名点击
  • 网站开发设计论文重庆百度seo
  • 太原做网站页面的济南百度推广代理商
  • wordpress添加js长沙seo网络优化
  • 女生学网站设计市场调研报告包括哪些内容
  • 建设网站测试百度app浏览器下载