Mediator Design Pattern en ASP.NET Core
Un patrón mediator encapsula cómo interactúan y se comunican los objetos entre sí. Este patrón promueve el acoplamiento flexible de objetos para evitar un grafo de dependencia poco elegante. El patrón mediator permite a los objetos evitar referirse directamente entre sí al encapsular la comunicación en un objeto mediator central.
Características del Patrón Mediator:
1. Mediator: define la comunicación entre colleagues.
2. Concrete Mediator: implementa la comunicación entre colleagues.
3. Colleague: se comunica solo con el mediator.
4- Collegue Concrete: recibe un mensaje del mediator.
Ejemplo de implementación usando C#
Mediator: es una clase abstracta que define la comunicación entre colleagues.
Concrete Mediator: implementa la comunicación entre colleagues, donde tiene una lista de todos los colleagues registrados con la capacidad de crear y registrar colleagues, y definir el mediador para este colleague.
Colleague: es una clase abstracta que define cómo los colleagues se comunican con el mediator.
Concret Colleague: recibe un mensaje del mediator y lo maneja.
El programa define el mediator y crea colleagues que envían un mensaje de difusión desde el colleague remitente a todos los demás colleagues registrados.
MediatR
Es una biblioteca de código abierto que ha ganado popularidad en el mundo de C# llamada MediatR creada por Jimmy Bogard. Esta biblioteca de mediator tiene una implementación bastante diferente al patrón de diseño de mediator original. Pero eso no es algo malo; de hecho, es algo bueno. Donde MediatR brilla es en el procesamiento de mensajes, tanto en el estilo de enviar y recibir mensajes como en el estilo de mensajes de difusión o comando. Y MediatR asegura que estos mensajes se enrutan a los lugares apropiados. Entonces, podrías pensar en ello como un sistema de mensajería en memoria un poco más.
Instalación de MediatR
Lo primero que necesitamos hacer es instalar el paquete NuGet de MediatR. Entonces, desde tu consola de administrador de paquetes, ejecuta:
También necesitamos instalar un paquete que nos permita aprovechar el contenedor IOC integrado en .NET Core (veremos más de eso en breve). Así que también instala el siguiente paquete.
Finalmente, abrimos nuestro archivo startup.cs. En nuestro método ConfigureServices, necesitamos agregar una llamada para registrar todas las dependencias de MediatR.
Ahora vamos a crear un controlador API llamado ContactsController. Inyectaremos la interfaz IMediator en el constructor y agregaremos lógica para recuperar un contacto por su id como se muestra a continuación.
Define la consulta y el manejador de consulta donde MediatR procesará el mensaje y lo manejará cuando se solicite.











