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

怎样开个人网站市场调研数据网站

怎样开个人网站,市场调研数据网站,wordpress获取栏目名称,有什么网站帮做邀请函设计的阅读本文你的收获 学习MediatR工具#xff0c;实现进程内消息发送和处理过程的解耦学习MediatR的两种消息处理模式了解中介者模式和其好处 一、什么是MediatR#xff1f; MediatR是一款基于中介者模式的思想而实现的.NET库#xff0c;支持.NET Framework和跨平台 的.NET C…阅读本文你的收获 学习MediatR工具实现进程内消息发送和处理过程的解耦学习MediatR的两种消息处理模式了解中介者模式和其好处 一、什么是MediatR MediatR是一款基于中介者模式的思想而实现的.NET库支持.NET Framework和跨平台 的.NET Core。主要是为了解决进程内消息发送与消息处理过程之间的耦合问题。MediatR的作者是Jimmy Bogard如果你不知道这个人想必你也用过他开发的AutoMapper吧。 它通过一种进程内消息传递机制无其他外部依赖进行请求/响应、命令、查询、通知和事件的消息传递并通过泛型来支持消息的智能调度。 MediatR有两种消息处理模式 Request/Response模式请求响应模式一对一消息Message将被单个处理者Handler处理可以有返回值Notifictaion模式发布订阅模式一对多Message可以被多个Handler处理无返回值 二、中介者模式介绍 为什么使用中介者模式 在现实生活中中介者的存在是不可缺少的比如房屋中介、招聘平台等网络世界中有很多中介者模式的身影例如QQ游戏平台聊天室、QQ群和短信平台。 在软件设计领域为什么要使用中介者模式呢如果不使用中介者模式的话各个同事对象将会相互进行引用如果每个对象都与多个对象进行交互时将会形成如下图所示的网状结构。 从上图可以发现如果不使用中介者模式的话每个对象之间过度耦合这样的既不利于类的复用也不利于扩展。如果引入了中介者模式那么对象之间的关系将变成星型结构采用中介者模式之后会形成如下图所示的结构 中介者模式使之前的网状结构现在变成了以中介者为中心的星星结构。这样的设计大大减少了系统的耦合度。 中介者就像一个容器的它自己把控着整个流程和每一个对象都有或多或少或近或远的联系多个对象之间不用理睬其他对象发生了什么只是负责自己的模块就好然后把消息发给中介者让中介者再分发给其他的具体对象从而实现通讯 —— 这个思想就是中介者的核心思想而且也是DDD领域驱动设计的核心思想之一。 中介者模式是23种设计模式之一 中介者模式是23种设计模式的其中一个。中介者模式是一个行为设计模式它允许我们公开一个统一的接口系统的 不同部分 可以通过该接口进行 通信而 不需要 显式的相互作用 类图结构如下 中介者使各个对象不需要显式地相互引用从而使其耦合性降低而且可以独立地改变它们之间的交互。 以下情况下可考虑使用中介者模式 一组定义良好的对象之间需要进行通信的场合想通过一个中间类来封装多个类中的行为而又不想生成太多的子类。 以下是一个具体例子联合国就是一个中介者 三、MediatR的应用场景 以下是 MediatR 的一些适用场景 CQRSCommand and Query Responsibility Segregation命令查询责任分离MediatR 可以用于实现 CQRS 架构的命令与查询分离。通过将命令和查询封装为不同的请求对象并使用中介者模式来处理这些请求可以更好地组织和管理复杂的业务逻辑。事件驱动架构Event-Driven ArchitectureMediatR 可以用于实现事件的发布和订阅模式。通过定义和处理事件通知可以实现松耦合的组件间通信以及更灵活的系统扩展和异步处理。插件化和扩展性MediatR 可以用于实现插件化和可扩展的应用程序架构。通过定义通用的请求和处理逻辑并利用中介者模式将请求和处理解耦可以方便地添加、移除和替换各种功能模块。视图模型更新View Model UpdatesMediatR 可以用于处理视图模型的更新操作。通过定义更新请求和相应的处理器可以实现对视图模型的增、删、改等操作并在更新完成后及时通知相关组件进行界面更新。领域事件和领域命令MediatR 可以用于处理领域事件和领域命令。通过定义相应的事件和命令并使用中介者模式进行处理可以有效地组织和管理领域逻辑并实现解耦、可测试和可扩展的领域模型。 总体而言MediatR适用于需要解耦请求和处理逻辑的场景能够提高代码的可读性、可维护性和可扩展性。它可以与其他架构模式如CQRS、事件驱动架构等结合使用以满足不同的业务需求和系统设计要求。 四、MediatR使用入门 开发环境 平台版本是.NET6 开发框架ASP.NET Core WebApi 开发工具Visual Studio 2022 引用MediatR的NuGet包案例版本为11.0.0 3.1 演示 request/response 请求响应模式 此案例演示一个游戏管理模块的“添加游戏”这个功能。 步骤一创建一个“”添加游戏”请求消息类需要实现IRequest,或IRequest T 接口 //引用命名空间 using MediatR;namespace MediatRWebApp.Requests {//Request类string是处理者响应的数据类型public class AddGameRequest : IRequeststring{public int GameId { get; set; } public string GameName { get; set; }public string GameType { get; set; }} }步骤二创建一个消息处理器对象需实现 IRequestHandlerAddGameRequest , string接口 using MediatR; using MediatRWebApp.Requests;namespace MediatRWebApp.RequestHandlers {//Handler类型PingRequest是其处理的请求类型string是处理者响应的数据类型public class AddGameRequestHandler : IRequestHandlerAddGameRequest, string{/// summary/// 处理AddGameRequest请求返回string类型的响应/// /summary/// param namerequest请求对象/param/// param namecancellationToken取消令牌/param/// returns/returnspublic Taskstring Handle(AddGameRequest request, CancellationToken cancellationToken){//做如下的一些处理代码略//验证输入的参数是否正确//可能还要做名称的唯一性判断//根据Request来创建一个实体对象//用仓储把他保存到数据库中return Task.FromResult(添加游戏成功);}} }步骤三在服务容器中注册AddGameRequestHandler using MediatR; using MediatRWebApp.RequestHandlers;//在Program.cs 注册AddGameRequestHandler builder.Services.AddMediatR(typeof(AddGameRequestHandler ));步骤四在控制器方法中用Mediator的Send方法发送请求对应的Request请求将由注册过的Handler来处理。 //在控制器中使用 using MediatR; using MediatRWebApp.Requests; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc;namespace MediatRWebApp.Controllers {[Route(api/[controller])][ApiController]public class GameController : ControllerBase{//构造函数注入Mediatorprivate readonly IMediator _mediator;//构造方法public GameController(IMediator mediator){_mediator mediator;}/// summary/// 添加游戏的接口方法/// /summary/// returns/returns[HttpPost]public async TaskIActionResult Add([FromBody]AddGameDto input){AddGameRequest request new AddGameRequest (){GameName input.GameName,GameType input.GameType };var response await _mediator.Send(request);return Ok(response);}} }3.2 演示 Notification 发布/订阅模式 步骤一创建一个通知对象必须继承INotification接口 using MediatR;public class DomainNotification: INotification {public DomainNotification(string message){Message message;}public string Message { get; set; } //通知的消息 }步骤二创建两个消息处理器 //步骤二创建一个消息处理器 public class DomainNotificationHandler : INotificationHandlerDomainNotification {/// summary/// 处理消息/// /summary/// param namenotification/param/// param namecancellationToken/param/// returns/returnspublic Task Handle(DomainNotification notification, CancellationToken cancellationToken){Console.WriteLine({0} 被消息处理器DomainNotificationHandler处理了, notification.Message);return Task.CompletedTask;} }//步骤二创建另一个消息处理器 public class AnotherNotificationHandler : INotificationHandlerDomainNotification {/// summary/// 处理消息/// /summary/// param namenotification/param/// param namecancellationToken/param/// returns/returnspublic Task Handle(DomainNotification notification, CancellationToken cancellationToken){Console.WriteLine({0} 被消息处理器AnotherNotificationHandler处理了, notification.Message);return Task.CompletedTask;} }步骤三通过 中介者对象 发布通知消息发布订阅模式 using MediatR; using MediatRWebApp.Notifications; using MediatRWebApp.Requests;[Route(api/[controller])][ApiController]public class PingController : ControllerBase{private readonly IMediator _mediator;//构造方法public PingController (IMediator mediator){_mediator mediator;}/// summary/// 测试方法/// /summary/// returns/returns[HttpPost]public async TaskIActionResult TestNotification(){//发送请求消息 PingRequestvar response await _mediator.Send(new PingRequest());//将通知消息广播出去订阅了DomainNotification的Handler都能够响应await _mediator.Publish(new DomainNotification(添加成功));return Ok(response);}}本文到此结束欢迎各位的支持和鼓励如果对你有帮助的话请点赞关注或者转发给需要的朋友。
http://www.pierceye.com/news/934653/

相关文章:

  • 免费隐私网站推广海宁自适应网站建设
  • ipad网站制作网络平台怎么建立网站吗
  • 午夜资源站诸暨北京有哪些网站制作公司
  • 无忧自助建站安卓手机建站
  • 网站建设怎设计榆林市城乡建设规划局网站
  • 网站建设相关资讯做网站 思源字体
  • 辽宁网站设计国家开发大学网站作业怎么做
  • 仿西部数码网站注册建筑设计师
  • 南昌企业网站设计建设制作怎么删除ghost wordpress
  • 如何建个人免费网站手机怎么做网站免费的
  • 目前做那个网站能致富怎么增加网站的权重
  • 无锡网站建设818gx中国机械加工网卸粮四通
  • 淘宝网网站建设出入南京最新通知今天
  • 做企业网站项目的心得做网站一定要后台嘛
  • 青峰集团响应式网站论坛网站怎么做跳转
  • 代网站建设制作微信公众号网站开发
  • 潍坊网站的公司电话网站关键字多少个
  • 网站开发确认书青岛做网站的公司哪个好
  • 权威的企业网站建设网站开发费用算无形资产吗
  • 网站安全在线检测网络制作软件
  • 潍坊网站设计制作威宁住房和城乡建设局网站
  • 哈尔滨企业建站网站开发推广文案怎么写
  • 建立电子商务网站目的想要开网店怎么开
  • iis怎么建设网站内容杭州做搜索引擎网站的公司
  • 兰州网站开发价格建设和住房保障部 网站
  • 机械设备网站建设效果好的徐州网站开发
  • 商丘网站建设专业现状桓台县网站建设
  • 一级a做爰片免费网站孕交视频教程wordpress用的什么前端
  • 中文设计网站wordpress退出登录
  • 贵阳网站建设多少钱?帝国cms资源网模板