Eine konkrete (ich hoffe) Frage, die ich würde gerne eine konkrete Antwort auf, wenn möglich ... in Bezug auf DDD-Architektur von Aggregaten und Repository Verantwortung und feinkörnigen Ebene.Bestimmung der Repository und aggregieren Größe und Verantwortung in DDD-Architektur
Lets sagen, ich habe folgende (vereinfachte) Tabellen:
- Kunde [id, name, groupId, categoryId]
- customerGroup [id, name]
- customerCategory [id, name]
Basisfunktionalität (nur Beispiel für die Verwendung von Methoden zu zeigen)
Kundenliste anzeigen und klicken, um einen Kunden anzuzeigen. Bearbeiten Sie den Kunden und wählen Sie die Gruppe aus einer Dropdown-Liste aller Gruppen. Und das gleiche für die Kategorie.
Frage
Sollte halte ich Kundengruppe und Kategorie als separate Aggregate mit:
CustomerRepository. Mit den Methoden GetAllCustomers, GetCustomerById usw.
CustomerGroupRepository. Mit Methoden GetAllCustomerGroups, GetOneCustomerGroup
CustomerCategoryRepository. Mit Methoden GetAllCustomerCategories, GetOneCustomerCategory
Oder nur ein Repo - CustomerRepository (mit allen oben genannten Methoden, mehr explizit genannt).
Ebene oben wird entweder ein CustomerService mit einem/vielen repos oben injiziert werden.
Ich würde gerne etwas über die Frage nach der Größe von Aggregaten und verwandten Daten (Kategorien, Gruppen) mit Vor- und Nachteilen von feinkörnigen Repositories oder nicht. Trotzdem bleibt es einfach und konzentriert sich darauf, Probleme auf eine gute Art und Weise zu lösen, ohne die Dinge zu überarbeiten.
Ich habe versucht, ähnliche Beispiele hier auf SO zu finden und auch Vaughn vernons Artikel zu lesen, aber habe nicht zum Beispiel gesehen, wie sein Beispiel von Produktaggregat Produktkategorien gehandhabt hat.
Große Punktfrage, danke. Antwort ist zu diesem Zeitpunkt nicht - daher werde ich es jetzt in einem Repo einfach halten. Wenn sich das ändert - dann folgt ein Refactor. – Martin