Command bus - implementacja i zasadność

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.)

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ć.

0

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

1

A po co tyle kontrolerów?

0

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

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.

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

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