栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MediatR——IRequest(1)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MediatR——IRequest(1)

MediatR
  • 一、简介
  • 二、安装Nuget
  • 三、信息配置
    • startup.cs
    • CreateOrderCommand
    • IRequestHandler
    • OrderController.cs
    • 当写入多个处理
    • 总结

一、简介

NET 中的简单中介实现
没有依赖关系的进程内消息传递。
支持请求/响应、命令、查询、通知和事件、同步和异步,通过 C# 通用方差进行智能调度。

二、安装Nuget

Install-Package MediatR

三、信息配置

创建weiapi项目

startup.cs
public void ConfigureServices(IServiceCollection services)
        {
        //注册MeditaR
            services.AddMediatR(typeof(Startup));
            services.AddControllers();
        }
CreateOrderCommand

请求/响应接口处理命令和查询场景。首先,创建一条消息

    public class CreateOrderCommand : IRequest
    {
        public string OrderName { get; set; }
    }

创建一个处理程序

IRequestHandler
public class CreateOrderCommandHandleSecond : IRequestHandler
    {
        //实现Handle方法
        public Task Handle(CreateOrderCommand request, CancellationToken cancellationToken)
        {
            var s = $"CreateOrderCommandHandlerSecond: Create Order ${request.OrderName}";
            return Task.FromResult(s);
        }
    }
OrderController.cs

注入Mediator

 private readonly IMediator _mediator;

        public OrderController(IMediator mediator)
        {
            _mediator = mediator;
        }

发送消息

[HttpPost]
        public async Task CreateOrder([FromBody] CreateOrderCommand command)
        {
            return await _mediator.Send(command);
        }
当写入多个处理
public class CreateOrderCommandHandleSecond : IRequestHandler
    {
        public Task Handle(CreateOrderCommand request, CancellationToken cancellationToken)
        {
            var s = $"CreateOrderCommandHandlerSecond: Create Order ${request.OrderName}";
            return Task.FromResult(s);
        }
    }
    public class CreateOrderCommandHandle : IRequestHandler
    {
    //实现Handle方法
        public Task Handle(CreateOrderCommand request, CancellationToken cancellationToken)
        {
            var s = $"CreateOrderCommandHandler: Create Order ${request.OrderName}";
            return Task.FromResult(s);
        }

    }

处理结果有有一个

当IRequestHandler有两个处理程序方法,只会处理一个。

总结

通过一个中介者完成业务流程,显得控制器更加清晰,只负责提供接口、接收数据和权限标注

应用场景:通常会用来实现CQRS(命令查询职责分离),也可以用于模块解耦相关场景。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/970551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号