DEV Community

Juarez Júnior
Juarez Júnior

Posted on

Desacoplamento de Comunicação com MediatR

O MediatR é uma biblioteca que implementa o padrão Mediator, facilitando a comunicação entre diferentes partes de uma aplicação sem que elas precisem estar diretamente acopladas. Isso promove um design mais modular e flexível. Ele é amplamente utilizado em aplicações para gerenciar comandos e eventos de forma centralizada. Neste exemplo, veremos como utilizar o MediatR para enviar um comando e processar sua resposta em um manipulador.

Bibliotecas:

Para usar a biblioteca MediatR e o Microsoft.Extensions.DependencyInjection, instale os seguintes pacotes NuGet no seu projeto:

Install-Package MediatR.Extensions.Microsoft.DependencyInjection
Install-Package Microsoft.Extensions.DependencyInjection
Enter fullscreen mode Exit fullscreen mode

Código de Exemplo:

using MediatR;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading;
using System.Threading.Tasks;

// Definindo o comando
public class SaudarCommand : IRequest<string>
{
    public string Nome { get; set; }
}

// Definindo o manipulador para o comando
public class SaudarCommandHandler : IRequestHandler<SaudarCommand, string>
{
    public Task<string> Handle(SaudarCommand request, CancellationToken cancellationToken)
    {
        return Task.FromResult($"Olá, {request.Nome}!");
    }
}

class Program
{
    static async Task Main(string[] args)
    {
        // Configurando o MediatR com injeção de dependência
        var services = new ServiceCollection();
        services.AddMediatR(typeof(Program));
        services.AddSingleton<SaudarCommandHandler>(); // Registrando o handler

        var provider = services.BuildServiceProvider();

        var mediator = provider.GetRequiredService<IMediator>();

        // Enviando o comando e recebendo a resposta
        var resultado = await mediator.Send(new SaudarCommand { Nome = "Desenvolvedor" });
        Console.WriteLine(resultado);
    }
}
Enter fullscreen mode Exit fullscreen mode

Explicação do Código:

Neste exemplo, criamos um comando chamado SaudarCommand que contém um campo Nome. O manipulador SaudarCommandHandler recebe esse comando e retorna uma saudação personalizada. No método Main, configuramos o MediatR usando injeção de dependência e registramos o manipulador. Criamos o comando com o nome “Desenvolvedor” e o enviamos através do MediatR. O manipulador processa o comando e retorna a saudação, que é exibida no console.

Conclusão:

O MediatR é uma ferramenta poderosa para implementar o padrão Mediator, desacoplando a lógica de negócios da comunicação entre componentes. Ele permite organizar melhor a aplicação, facilitando a manutenção e o teste.

Código fonte: GitHub

Top comments (0)