Als Übung versuche ich, eine einfache Blog-Anwendung in .NET zu erstellen, die DDD verwendet. Bisher habe ich User-, Topic- und Comment-Klassen. Aber das Problem ist, wie Kommentar mit Benutzer und Thema verknüpfen? Wenn ich sage, dass Benutzer und Thema aggregierte Wurzeln sind, wo gehört Kommentar?DDD - aggregieren Wurzeln in einem sehr einfachen Blog-Modell
0
A
Antwort
0
Aggregate können Assoziationen zu anderen Aggregatwurzeln aufweisen.
z.B. Ein Kommentar kann sowohl mit dem Thema als auch mit dem Benutzer verknüpft sein. So würde ich es sowieso modellieren, aggregierte Wurzeln sind Grenzen der Konsistenz. Ein Thema muss in keiner Weise konsistent mit seinen Kommentaren sein, daher müssen Kommentare nicht Teil dieses Aggregats sein. Ein Benutzer muss nicht mit allen seinen Kommentaren konsistent sein, sodass die Benutzer auch nicht über Kommentare Bescheid wissen müssen.
Ich würde die Kommentare für ein bestimmtes Thema von der Kommentar-Repository abrufen. z.B.
var comments = commentRepo.FindCommentsForTopic(someTopic);
//or by topic id for pragmatic reasons.
Diese Frage würde niemals existieren, wenn Sie der DDD-Theorie gefolgt wären. Brainstorming und zeichnen Sie zuerst die möglichen Szenarien, dann Code. Zum Beispiel kann ein Thema als der erste Kommentar einer Reihe von ihnen gedacht werden, also gibt es keinen großen Unterschied zwischen ihnen außer den Extras, die ein Thema hat (Titel, Tags, etc.) – yoda
Nun, ich bin ein komplettes Noob in DDD und Software-Architektur im Allgemeinen. Aber von dem, was ich gehört habe, sollte man eine Verallgemeinerung vermeiden, das heißt, wenn Benutzer ein Thema als etwas anderes als einen Kommentar betrachten, sollte ich es nicht als Kommentar modellieren. Ich versuche gerade mein Modell zu brainstormieren ... –