Do jakich cross-cutting concerns używacie MediatR? Na myśl przychodzi mi głównie walidacja requestów i logowanie. Tylko że je można w zasadzie obsłużyć jakimiś HTTP action filters, nie trzeba do tego MediatR. Dlaczego o to pytam? Zacząłem korzystać z FastEndpoints: https://fast-endpoints.com/ i struktura kodu wygląda u mnie teraz następująco:
- PlaceOrder
- PlaceOrder
- PlaceOrderValidator
- PlaceOrderHandler
- PlaceOrderEndpoint
- Other commands...
Czyli trzymam endpoint obok handlera. I tu się zastanawiam: czy powinienem wstrzyknąć PlaceOrderHandler
bezpośrednio do PlaceOrderEndpoint
? Czy może lepiej wstrzyknąć IMediator
i zrobić _mediator.Send()
? W pierwszym podejściu zależność jest zdefiniowana explicite. Nie spodziewam się, żeby kiedykolwiek endpoint miał przyjąć inny handler niż ten, który jest zdefiniowany obok, więc nie potrzebuję tego loose coupling, które ma sens w przypadku kontrolerów. Jedyne, co daje mi MediatR, to możliwość podpięcia pipeline'ów do handlerów. Stąd moje pytanie: do jakich cross-cutting concerns używacie MediatR?
CC: @Aventus