Command bus - implementacja i zasadność

Command bus - implementacja i zasadność
SA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:94
0

W CQRS command bus ma za zadanie użyć odpowiedniego handlera do danej komendy. Wszystko ok tylko raz, że nie bardzo wiem jak to sensownie zaimplementować (jakaś mapa z kluczem w postaci command i wartością jako handler? Widziałem też implementacje oparte na refleksji.) a dwa, że nie bardzo widzę sens tej dodatkowej warstwy, bo przecież taki np rest controller może mieć wstrzykniętego po prostu odpowiedniego handlera i żaden command bus nie jest potrzebny albo ja czegoś nie widzę. (np. CreateUserController i wstrzyknięty do niego CreateUserHandler i tyle.)

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:5 dni
  • Lokalizacja:Wrocław
2

No i jak kontroler ma obsłużyć np. 5 różnych poleceń, to będziesz mu wstrzykiwał 5 różnych handlerów, tak?
Właśnie po to używa się pośrednika, aby tego typu rzeczy unikać.

SA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:94
0

@somekind:
Nie, po prostu robiłbym controller per poleceń, co z resztą napisałem w pierwszym poście.

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:5 dni
  • Lokalizacja:Wrocław
1

A po co tyle kontrolerów?

SA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:94
0

@somekind: No dobra, no to jak ten command bus zaimplementować z sensem?

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
1

np rest controller może mieć wstrzykniętego po prostu odpowiedniego handlera i żaden command bus nie jest potrzebny albo ja czegoś nie widzę

A co jeśli eventy mogą przychodzić różnymi drogami? RESTem, SOAPem, z jakiejś kolejki, periodycznie odczytywane z jakiejś bazy danych, może periodycznie pobierane z jakiegoś innego serwisu? Jeśli masz handler który jest częścią domeny a nie jest bezpośrednio spięty z kontrolerem, to nie obchodzi cię nagle skąd przychodzi event. Ja bym zresztą od tego w ogóle zaczął -> od odcięcia domeny aplikacji od technikaliów jak jakieś kontrolery, bazy danych itd.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:5 dni
  • Lokalizacja:Wrocław
2
Sampeteq napisał(a):

@somekind: No dobra, no to jak ten command bus zaimplementować z sensem?

Jeśli musisz sam, to po prostu podejrzyj jak to robi konkurencja: https://github.com/jbogard/MediatR/blob/master/src/MediatR/Mediator.cs

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.