Alternatywy dla wielu relacji z CQRS

Jak modelować Klasyczne relacje wiele do wielu za pomocą CQRS / DDD?

Wiem, że zarówno implementacje i rozwiązania DDD, jak i CQRS są zazwyczaj specyficzne dla danej domeny, więc może być trudno znaleźć ogólną odpowiedź na to pytanie.

Załóżmy jednak, że mamy znajomą relację między Book i Author . Jest to klasyczny związek wielu do wielu.

Wydaje mi się najbardziej naturalne, że Książka i autor to dwie różne byty, które każdy należy do własnego zagregowanego korzenia. Tak więc jawne modelowanie relacji wiele do wielu między nimi nie jest drogą do zrobienia.

Jak modelować polecenie Addbook? Chcemy być w stanie dodać książkę do naszej biblioteki, a także jakoś stwierdzić, że konkretny autor napisał tę książkę . Jak modelować (i utrzymywać) taki związek?

Ani Książka ani autor nie wydają się dobrymi kandydatami do Obiekty Wartości ...

Author: Mark Seemann, 2010-10-14

1 answers

Przypuśćmy, że oba są agregatami, skopiuj potrzebne dane autora do agregatu książki po dodaniu nowej książki, aby kolejne polecenia miały wystarczającą ilość danych autora do pracy. Teraz, jeśli autor agregatu potrzebuje informacji o książkach napisanych przez autora, może "zapisać się" do zdarzenia NewBookAdded (technicznie można wysłać polecenie RegisterAsAuthorOfBook do autora agregatu w wyniku zdarzenia NewBookAdded). Przypuszczam, że można by to modelować na odwrót, ale nie jestem tak blisko z domeną autora książki.

Najważniejsze jest to, że tak naprawdę nie przechowujesz wielu do wielu, ponieważ nie skalują się. Trzeba zacząć myśleć o nich (agregatach) jako o wysyłaniu wiadomości do siebie nawzajem. Większe pytanie brzmi, co musi być spójne i w jakim momencie musi być spójne. Czy zależy nam, aby autor nie od razu odzwierciedlał faktu dodania nowej książki, której jest autorem? Są czy są jakieś niezmienniki, które autor chce wyegzekwować w odniesieniu do książek, które napisał (i vice versa)?

Kolejną rzeczą jest to, aby przestać być zorientowane na dane i bardziej zorientowane na zachowanie. Jakie jest zachowanie książki i autora? To powie, jakie dane są wymagane, w którym momencie i jak należy je modelować.

Http://pastie.org/1220582 za pierwsze dźgnięcie w Księgę.

 36
Author: Yves Reynhout,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-14 12:23:28