[C# 문법] MediatR 이란?

참고


개요

  • MediatR 이란 .NET 에서 간단한 중재자를 구현할 수 있게 해주는 라이브러리입니다.
  • 요청/응답, 명령, 쿼리, 알림 및 이벤트, C# 일반 분산을 통한 지능형 디스패칭으로 동기 및 비동기를 지원합니다.

MediatR 설치

  • MediatR 설치 방법은 다음과 같이 명령을 입력하여 설치를 진행할 수 있습니다.
Install-Package MediatR

MediatR 메시지 종류

  • MediatR 에는 전달하는 두 가지 종류의 메시지가 있습니다.
    • 단일 핸들러로 발송되는 요청/응답 메시지
    • 여러 핸들러에 전달되는 알림 메시지
  • 여기서 요청/응답 메시지 방법을 보도록 하겠습니다.

요청/응답

  • 요청/응답 인터페이스는 명령 및 쿼리 시나리오를 모두 처리합니다.
  • 먼저 메시지를 생성합니다.
public class Ping : IRequest<string> { }
  • 다음으로 핸들러를 만듭니다.
public class PingHandler : IRequestHandler<Ping, string>
{
    public Task<string> Handle(Ping request, CancellationToken cancellationToken)
    {
        return Task.FromResult("Pong");
    }
}
  • 마지막으로 중재자를 통해 메시지를 전송합니다.
var response = await mediator.Send(new Ping());
Debug.WriteLine(response); // "Pong"
  • 메시지에 응답이 필요하지 않은 경우, AsyncRequestHandler<TRequest> 기본 클래스를 사용합니다.
public class OneWay : IRequest { }
public class OneWayHandlerWithBaseClass : AsyncRequestHandler<OneWay>
{
    protected override Task Handle(OneWay request, CancellationToken cancellationToken)
    {
        // Twiddle thumbs
    }
}
  • 또는 요청이 완전히 동기식인 경우 기본 RequestHandler 클래스에서 상속합니다.
public class SyncHandler : RequestHandler<Ping, string>
{
    protected override string Handle(Ping request)
    {
        return "Pong";
    }
}

요청 유형

  • MediatR 에는 값을 반환하는 요청과 그렇지 않은 요청의 두 가지 유형이 있습니다.
    • IRequest<T> - 요청이 값을 반환
    • IRequest - 요청이 값을 반환하지 않음
  • 각 요청 유형에는 자체 핸들러 인터페이스와 일부 도우미 기본 클래스가 있습니다.
    • IRequestHandler<T, U> - Task<U> 이것을 구현하고 반환
    • RequestHandler<T, U> - 'U' 이것을 상속하고 반환
  • 그런 다음 반환 값이 없는 요청의 경우:
    • IRequestHandler<T> - 이것을 구현하면 Task를 반환합니다.
    • AsyncRequestHandler<T> - 이것을 상속하면 Task를 반환합니다.
    • RequestHandler<T> - 이것을 상속하면 아무 것도 반환하지 않습니다(void).
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY