Bei der Beurteilung eines potenziellen Projekts bei der Arbeit schlug ich vor, dass es vorteilhaft sein könnte, einen domänengetriebenen Entwurfsansatz für sein Objektmodell zu verwenden. Das Projekt hat keine übermäßig komplexe Domäne, daher hat mein Kollege Folgendes auf mich geworfen:
Es wurde gesagt, dass DDD in Fällen vorteilhaft ist, in denen es ein komplexes Domänenmodell gibt („... es gilt immer dann, wenn wir in einer komplexen, komplizierten Domäne arbeiten“, Eric Evans).
Ich verliere mich in der Frage, wie Sie die Komplexität einer Domain definieren. Kann es durch die Anzahl der aggregierten Wurzeln im Domänenmodell definiert werden? Liegt die Komplexität einer Domäne im Zusammenspiel von Objekten?
Die Domain, die wir bewerten, ist das Online-Publishing und das Content-Management.
quelle
Antworten:
Die Komplexität der Geschäftslogik, auch als Anwendungsverhalten bezeichnet, ist der wichtigste Faktor. Der zweitwichtigste Faktor ist, wie groß die Lücke zwischen dem technischen Problem und dem Geschäftswortschatz ist, der zur Beschreibung dieses Problems verwendet wird, da es bei DDD darum geht, ein gemeinsames Vokabular zwischen dem Geschäft und dem Ingenieurteam zu erstellen.
Einige der in DDD verwendeten Muster sind in der Unternehmensanwendungsarchitektur im Allgemeinen nützlich, z. B. das Repository-Muster, Bounded Context und Layered Architecture. Nur weil Sie diese Muster verwenden, bedeutet dies nicht, dass Sie domänengesteuertes Design durchführen.
Wenn es nicht viel Verhalten gibt, dh wenn Sie hauptsächlich Daten speichern und nicht auf diese Daten reagieren, ist der Aufbau dieser Domänenschicht möglicherweise weniger sinnvoll. Wenn Sie in der Inhaltsverwaltung lediglich Genehmigen und Veröffentlichen ausführen, kann dies möglicherweise durch Kennzeichen im System und nicht durch Domänenmethoden dargestellt werden. Wenn Sie jedoch zusätzliches Verhalten hinzufügen, wird die Eignung einer vollständigen Domänenebene deutlicher.
Wenn wir über Content Management sprechen, sind hier einige (imaginäre) Regeln, die möglicherweise auf die Notwendigkeit von DDD hinweisen:
quelle