领域事件是指:一个领域中出触发的

集成事件是指:多个微服务之前产生的事件

核心对象

IMediator

INotification

INotificationHandler

引入:IMediator 包

第一个示例演示了使用MediatR使用请求/响应类型的操作。它期望对请求做出一些反应。使用 Send 发送 (注意:Send 只会执行一个扫到的Handler类)

IRequest是指请求的响应是布尔响应。现在,需要一个处理程序来处理这种类型的请求。

Send方法

使用 Send 方法,注意注册容器

services.AddMediatR(Assembly.GetExecutingAssembly());

 [HttpPost]
public string Get([FromForm] RequestUser user)
{
_mediator.Send(user);
return "执行了Send";
}
响应体
  public class RequestUser : IRequest<bool> //IRequest<bool> 代表响应是一个 true / false
{
public int UserId { get; set; }
public string UserName { get; set; }
}
请求体 RequestUser 返回一个Bool
  public class UserHandler : IRequestHandler<RequestUser, bool>
{
public Task<bool> Handle(RequestUser request, CancellationToken cancellationToken)
{
System.Console.WriteLine("第一个执行了!");
return Task.FromResult(true);
}
}
可以看到 这里只执行了第一个 (执行第一个找到的)

也可以返回一个实体对象

例如:(注意需要把 RequestUser :IRequest 、、修改为 RequestUser :IRequest 或者 返回值为IList类型 IRequest<IEnumerable> )

还需要实现UserHandler : IRequestHandler<RequestUser, bool> 、、修改为 IRequestHandler<RequestUser, ReponseUser> 或者 返回值为IList类型 IRequestHandler<RequestUser, IEnumerable> 。第一个是请求参数,第二个为响应

public class UserHandler : IRequestHandler<RequestUser, ReponseUser>
{
public Task<ReponseUser> Handle(RequestUser request, CancellationToken cancellationToken)
{
System.Console.WriteLine("第一个执行了!");
return Task.FromResult(true);
}
}
public class ReponseUser
{ }

使用 Publish

Publish 会执行所有的

未完待续!

DDD-领域驱动(四)-使用IMediator 实现领域事件的更多相关文章

  1. 基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑

    目录 系列文章 领域逻辑和应用逻辑 多应用层 示例:正确区分应用逻辑和领域逻辑 学习帮助 系列文章 基于ABP落地领域驱动设计-00.目录和前言 基于ABP落地领域驱动设计-01.全景图 基于ABP落 ...

  2. DDD 领域驱动设计-如何完善 Domain Model(领域模型)?

    上一篇:<DDD 领域驱动设计-如何 DDD?> 开源地址:https://github.com/yuezhongxin/CNBlogs.Apply.Sample(代码已更新) 阅读目录: ...

  3. DDD领域驱动设计和实践(转载)

    -->目录导航 一. DDD领域驱动设计介绍 1. 什么是领域驱动设计(DDD) 2. 领域驱动设计的特点 3. 如果不使用DDD? 4. 领域驱动设计的分层架构和构成要素 5. 事务脚本和领域 ...

  4. 【系统架构】软件核心复杂性应对之道-领域驱动DDD(Domain-Driven Design)

    前言 领域驱动设计是一个开放的设计方法体系,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题,本文将介绍领域驱动的相关概念. 一.软件复杂度的根源 1.业务复杂度(软件的 ...

  5. 初探领域驱动设计(2)Repository在DDD中的应用

    概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...

  6. DDD(领域驱动设计)总结

    基本概念: 领域驱动设计(简称 ddd)概念来源于2004年著名建模专家eric evans发表的他最具影响力的书籍:<domain-driven design –tackling comple ...

  7. 领域驱动和MVVM应用于UWP开发的一些思考

    领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...

  8. [.NET领域驱动设计实战系列]专题一:前期准备之EF CodeFirst

    一.前言 从去年已经接触领域驱动设计(Domain-Driven Design)了,当时就想自己搭建一个DDD框架,所以当时看了很多DDD方面的书,例如领域驱动模式与实战,领域驱动设计:软件核心复杂性 ...

  9. 领域驱动设计和实践(转:http://kb.cnblogs.com/page/112298/)

    引言 软件系统面向对象的设计思想可谓历史悠久,20世纪70年代的Smalltalk可以说是面向对象语言的经典,直到今天我们依然将这门语言视为面向对象语言的基础.随着编程语言和技术的发展,各种语言特性层 ...

  10. .NET领域驱动设计系列(12)

    [.NET领域驱动设计实战系列]专题十一:.NET 领域驱动设计实战系列总结 摘要: 一.引用 其实在去年本人已经看过很多关于领域驱动设计的书籍了,包括Microsoft .NET企业级应用框架设计. ...

随机推荐

  1. 6. MGR状态监控 | 深入浅出MGR

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 节点状态监控 2. MGR事务状态监控 3. 其他监控 4. 小结 参考资料.文档 免责声明 文章推荐: 关于 ...

  2. MultiJittered采样类定义和测试

    多重抖动在书上说的是水平和竖直方面随机交换. 类声明: #pragma once #ifndef __MULTIJITTERED_HEADER__ #define __MULTIJITTERED_HE ...

  3. Docker 15 Compose

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  4. 深入理解Spring注解机制(一):注解的搜索与处理机制

    前言 众所周知,spring 从 2.5 版本以后开始支持使用注解代替繁琐的 xml 配置,到了 springboot 更是全面拥抱了注解式配置.平时在使用的时候,点开一些常见的等注解,会发现往往在一 ...

  5. [题解]Balance

    1.题目 POJ-1837 2.题目大意 一个天平上有一些钩子,现在有一些砝码.给出每个钩子到原点(姑且这么叫吧)的距离(-15 ~ 15,负数代表在左边,正数相反)以及砝码的重量(1 ~ 20),求 ...

  6. 【建议收藏】Mac VMWare NAT模式安装 CentOS 7-操作教程

    学习大数据离不开 Linux 系统,网络上大部分文章都是在 Windows 系统下使用 VMWare Workstation 安装 CentOS ,并使用 NAT 模式配置网络.本文基于 Mac OS ...

  7. Android OOM 问题探究 -- 从入门到放弃

    一.前言 最近客户反馈了一些OOM的问题,很早之前自己也有简单了解过OOM的知识,但时间久远,很多东西都记不清了. 现在遇到这个OOM问题,也即趁此搜索了一些资料,对OOM问题做一些探究,把资料记录于 ...

  8. Word 分栏符怎么使用

    如果你使用栏来设置文档格式(如在某些新闻稿布局中),则文本将自动从一栏排列到另一栏.可以插入你自己的分栏符,以更好地控制文档格式. 单击"布局"选项卡--"页面设置&qu ...

  9. 【2022知乎爬虫】我用Python爬虫爬了2300多条知乎评论!

    您好,我是 @马哥python说,一枚10年程序猿. 一.爬取目标 前些天我分享过一篇微博的爬虫: https://www.cnblogs.com/mashukui/p/16414027.html 但 ...

  10. WPF开发快速入门【7】WPF的拖放功能(Drag and Drop)

    概述 本文描述WPF的拖放功能(Drag and Drop). 拖放功能涉及到两个功能,一个就是拖,一个是放.拖放可以发生在两个控件之间,也可以在一个控件自己内部拖放.假设界面上有两个控件,一个Tre ...