MediatR我应该在什么时候使用它,为什么要使用它? [英] MediatR when and why I should use it?

查看:26
本文介绍了MediatR我应该在什么时候使用它,为什么要使用它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以前可能有人问过,但我在官方网站上也找不到为什么要使用MediatR,它解决了什么问题?

  • 是否因为我可以在构造函数中传递单个对象,而不是多个接口?

  • 它是ServicesBus等的替代品还是竞争对手.

  • 基本上有什么好处,解决了什么问题

我想购买它,但我不清楚为什么要使用它。

非常感谢

推荐答案

是因为我可以在构造函数中传递单个对象,而不是 多个接口?

它是ServicesBus等的替代品还是竞争对手.

基本上有什么好处,解决了什么问题


其中,MediatR要解决的问题之一是MVC控制器中的DI构造函数爆炸

public DashboardController(
    ICustomerRepository customerRepository,
    IOrderService orderService,
    ICustomerHistoryRepository historyRepository,
    IOrderRepository orderRepository,
    IProductRespoitory productRespoitory,
    IRelatedProductsRepository relatedProductsRepository,
    ISupportService supportService,
    ILog logger
    )  

这是一个争论不休的话题,没有万能的解决方案,请看这个问题

How to avoid Dependency Injection constructor madness?

如果您希望将依赖项隐藏在更抽象的后面,那么在这一点上,您将希望查看所有选项,如重构、更多地分离关注点或其他技术。

老实说,MediatR网站上给出的示例问题和解决方案有点可疑,但它确实有其用途。简而言之,您需要选择适合您和您的环境的选项。

中介模式概述

中介器是一个对象,它决定对象如何以及何时彼此交互。它封装"如何",并根据状态、调用方式或您提供给它的有效负载协调执行。

关于你问题的精神,你真的应该看看这个网站:

Simplifying Development and Separating Concerns with MediatR

MediatR是中介器模式的开源实现,它 不会尝试做太多事,也不会施展魔法。它允许您 撰写消息、使用同步或创建和侦听事件 异步模式。它有助于减少耦合并隔离 请求要完成的工作和创建处理程序的问题 这将调度工作。

有关中介模式的详细信息

您能以您自己的观点描述一下为什么要使用它吗

中介模式通过中介通信帮助decoupling您的应用程序(这是一件事)。

通常,一个程序由大量的类组成。但是,随着程序中添加更多的类,这些类之间的通信问题可能会变得更加复杂。这使得程序更难阅读和维护。此外,更改程序可能会变得困难,因为任何更改都可能影响其他几个类中的代码。

使用中介器模式,对象之间的通信封装在中介器对象中。对象不再直接相互通信(解耦),而是通过中介器进行通信。这减少了通信对象之间的依赖关系,从而减少了耦合。

在现代软件中,中介模式通常可以在许多框架中找到,但是您可以创建自己的模式,或者使用许多可用的框架中的一种。

从这里开始,我认为您可能应该做更多的研究,我的意思是通常您在研究这些东西之前就会发现您需要这些东西,但是在这种情况下,我认为您真的需要找到一些好的示例来了解您是否需要Mediator模式,更需要MediatR

更新

wired_in对此提出了一些很好的实用意见

MediatR所做的全部工作就是为请求定位处理程序。那是 不是调解人模式。这种情况下的"调解人"并不 描述两个对象如何通信,它使用控制反转 它已经在应用程序中使用,并且只提供了一个 仅用于创建应用程序的无用抽象层 作为一个整体更难推理。您已经通过以下方式实现了解耦 将标准构造函数注入与IoC一起使用。我不明白为什么 人们对此深信不疑。让我们创建多个复合根,这样我们 不必将接口放入我们的构造函数中。

OP完全有理由质疑MediatR的观点。 我听到的对这个问题的最主要的回答是解释 一般的中介器模式,或者它使调用代码 清洁工。前一种解释假设MediatR库 实际上实现了中介器模式,这一点还很不清楚。这个 后者不是将另一个抽象添加到 已经抽象的IOC容器,它创建了多个组合 树根。只需注入处理程序,而不是服务定位它

这篇关于MediatR我应该在什么时候使用它,为什么要使用它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆