[C# 문법] MediatR 이란?
- C#/C# 문법
- 2022. 6. 3. 21:55
참고
개요
- 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
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] async 및 await 를 사용한 비동기 프로그래밍 (0) | 2022.07.22 |
---|---|
[C# 문법] Linq 성능 개선 (0) | 2022.06.10 |
[C# 문법] 명령 파이프라인에 중재자 패턴 사용 (0) | 2022.06.03 |
[C#] CQRS 란? (0) | 2022.05.31 |
[C# 문법] 패턴 일치 - null 검사 (0) | 2022.05.26 |
이 글을 공유하기