2013-08-07 8 views
6

Zastanawiam się, czy lepiej jest publikować zdarzenia, niż zgłaszać wyjątki z agregatów. Załóżmy, że mam domenę, w której istnieje wymóg, aby tylko studenci o określonym poziomie zaawansowania mogli zapisać się na zajęcia sportowe. Jeśli zadzwonię do EnrollForSports na uczniu, który nie spełnia kryteriów, czy agregat wyrzuci wyjątek lub opublikuje wydarzenie, zwłaszcza jeśli inne agregaty lub menedżerowie procesów są zainteresowani wynikiem tego procesu?CQRS - Wyjątki domen Zdarzenia Vs dla wyjątkowych scenariuszy

Jeśli wydarzenie jest publikowane, czy nie oznacza to, że potrzebna byłaby odpowiednia wewnętrzna funkcja obsługi zdarzeń do obsługi zdarzenia podczas odtwarzania, mimo że zdarzenie nie zmieniłoby stanu agregatu?

Jeśli zostanie zgłoszony wyjątek, w jaki sposób inne strony otrzymają powiadomienie? Czy program obsługi komend może wychwycić wyjątek, a następnie podnieść wydarzenie? Czy zdarzenia mogą być wywoływane z procedur obsługi komend?

Odpowiedz

5

Zasadniczo polecenie powinno być poprawne i wykonane, lub nieprawidłowe i nie wykonane. Pomysł ze zdarzeniami błędu odradzania pozostawia Cię gdzieś pośrodku, a informacja zwrotna dla tego, kto wysyła polecenie, jest niejednoznaczna i opóźniona. Jest to również niepotrzebna złożoność w Twojej domenie. Jeśli wyrzucisz wyjątek, otrzymasz natychmiastową informację zwrotną do kodu klienta, który wysłał polecenie.

+5

Bezpośrednim opinia będzie oczywiście działać tylko wtedy, gdy jest wyjątek synchronicznie, a nie gdzieś w dół linii złożonej saga lub Process Manager tworząc kolejną kaskadę wydarzeń i poleceń. –

Powiązane problemy