DEV Community

Juarez Júnior for Develop4Us

Posted on • Edited on

1

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

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay