MediatR - do jakich cross-cutting concerns?

0

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

1

jeśli nie masz zamiaru używać mediator.send to dla mnie instalowanie tego jest bez sensu. Możesz wstrzyknąć dedykawaną klase do danej funkcjonalności albo opędzić logike z handlera w endpoincie.
Ja pewnie pozostałbym przy mediator.send. Można jakiś pipe dać np na weryfikacje uprawnień

2
nobody01 napisał(a):

Do jakich cross-cutting concerns używacie MediatR? Na myśl przychodzi mi głównie walidacja requestów i logowanie.

Jeszcze np. przechwytywanie niezłapanych wcześniej wyjątków i konwersja ich do jakiejś sensownej struktury błędów.

Tylko że je można w zasadzie obsłużyć jakimiś HTTP action filters, nie trzeba do tego MediatR.

Ale w tym celu trzeba umieścić logikę aplikacyjną w warstwie API.

Pytania na które Ty musisz sobie odpowiedzieć, to:

  1. Czy chcesz umieszczać logikę aplikacji w API.
  2. Czy API to będzie zawsze Twój jedyny interfejs do aplikacji? Co z testami albo np. jakąś kafką?

1 użytkowników online, w tym zalogowanych: 0, gości: 1