Closed. This question needs to be more focused。它当前不接受答案。












想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。

1年前关闭。



Improve this question




以前可能有人问过它,但即使在官方网站上也找不到为什么我应该使用MediatR及其解决的问题?
  • 是因为我可以在构造函数中传递单个对象,而不是传递多个接口(interface)吗?
  • 它是ServicesBus等的替代品还是竞争对手?
  • 基本上有什么好处,它可以解决什么问题

  • 我想购买它,但是对我来说不清楚为什么我应该使用它。

    非常感谢

    最佳答案



    不。



    不。



    除其他外,MediatR试图解决的问题之一是MVC Controller 中的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



    有关介体模式的更多信息



    中介者模式通过通过中介者(它是事物)的通信来帮助decoupling您的应用程序。

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

    通过中介者模式,对象之间的通信被封装在中介者对象中。对象不再彼此直接通信(解耦),而是通过调解器进行通信。这减少了通信对象之间的依赖性,从而减少了耦合。

    在现代软件中,通常可以在许多框架中找到调解器模式,但是您可以创建自己的模式,也可以使用可用的众多模式之一。

    从这里开始,我认为您可能应该做更多的研究,通常是您在研究它们之前先确定需要这些东西,但是在这种情况下,我认为您确实需要找到一些很好的例子来了解是否需要调解人模式,以及更多MediatR库

    更新

    对此,wired_in发表了一些实用的评论





    10-06 12:59