Kann jemand bitte (kurz und bündig) erklären, was genau domänengesteuertes Design ist? Ich sehe den Begriff ziemlich oft, verstehe aber wirklich nicht, was er ist oder wie er aussieht. Wie unterscheidet es sich von nicht domänengesteuertem Design?
Kann jemand erklären, was ein Domänenobjekt ist? Wie unterscheidet sich die Domäne von normalen Objekten?
domain-driven-design
Calanus
quelle
quelle
Antworten:
BEARBEITEN:
Da dies ein Top-Ergebnis bei Google zu sein scheint und meine Antwort unten nicht lautet, beziehen Sie sich bitte auf diese viel bessere Antwort:
https://stackoverflow.com/a/1222488/1240557
ALTE ANTWORT (nicht so vollständig :))
Aus: Domain Driven Design von Eric Evans.
Dieses Buch beschreibt DDD ziemlich gut.
Registrieren Sie sich, um eine Zusammenfassung des Buches herunterzuladen , oder laden Sie die Zusammenfassung direkt herunter .
quelle
Domain Driven Design ist eine Methodik und ein Prozessrezept für die Entwicklung komplexer Systeme, deren Schwerpunkt auf der Zuordnung von Aktivitäten, Aufgaben, Ereignissen und Daten innerhalb einer Problemdomäne zu den Technologieartefakten einer Lösungsdomäne liegt.
Der Schwerpunkt von Domain Driven Design liegt auf dem Verständnis der Problemdomäne, um ein abstraktes Modell der Problemdomäne zu erstellen, das dann in einem bestimmten Satz von Technologien implementiert werden kann. Domain Driven Design als Methodik bietet Richtlinien dafür, wie diese Modellentwicklung und Technologieentwicklung zu einem System führen kann, das den Anforderungen der Benutzer entspricht und gleichzeitig robust gegenüber Veränderungen in der Problemdomäne ist.
Die Prozessseite von Domain Driven Design umfasst die Zusammenarbeit zwischen Domain-Experten, Personen, die die Problemdomäne kennen, und Design- / Architektur-Experten, Personen, die die Lösungsdomäne kennen. Die Idee ist, ein gemeinsames Modell mit gemeinsamer Sprache zu haben, damit Menschen aus diesen beiden unterschiedlichen Bereichen mit ihren zwei unterschiedlichen Perspektiven die Lösung diskutieren und tatsächlich eine gemeinsame Wissensbasis mit gemeinsamen Konzepten diskutieren.
Das Fehlen eines gemeinsamen Verständnisses der Problemdomäne zwischen den Personen, die ein bestimmtes System benötigen, und den Personen, die das System entwerfen und implementieren, scheint ein Haupthindernis für erfolgreiche Projekte zu sein. Domain Driven Design ist eine Methode, um dieses Hindernis zu beseitigen.
Es ist mehr als ein Objektmodell. Der Fokus liegt wirklich auf der gemeinsamen Kommunikation und der Verbesserung der Zusammenarbeit, damit die tatsächlichen Bedürfnisse innerhalb der Problemdomäne entdeckt und eine geeignete Lösung geschaffen werden kann, um diese Bedürfnisse zu erfüllen.
Domain-Driven Design: Das Gute und das Herausfordernde bietet mit diesem Kommentar einen kurzen Überblick:
Lesen Sie auch diesen Artikel Domain Driven Design für Services Architecture, der ein kurzes Beispiel enthält. Der Artikel enthält die folgende Miniaturbeschreibung des domänengesteuerten Designs.
Martin Fowler hat eine Reihe von Artikeln verfasst, in denen Domain Driven Design als Methodik erwähnt wird. Beispielsweise bietet dieser Artikel, BoundedContext , einen Überblick über das Konzept des begrenzten Kontexts aus der domänengesteuerten Entwicklung.
quelle
Sie können das domänengesteuerte Design NUR verstehen, wenn Sie zunächst die folgenden Punkte verstehen:
Von hier aus gekeult
quelle
Hier ist ein weiterer guter Artikel, den Sie über Domain Driven Design lesen können . wenn Ihre Bewerbung etwas Ernstes ist als eine College-Aufgabe. Die Grundvoraussetzung ist, alles um Ihre Entitäten herum zu strukturieren und ein starkes Domänenmodell zu haben. Unterscheiden Sie zwischen Diensten, die infrastrukturbezogene Dinge bereitstellen (wie das Senden von E-Mails, persistente Daten), und Diensten, die tatsächlich Dinge tun, die Ihren Kerngeschäftsanforderungen entsprechen.
Hoffentlich hilft das.
quelle
Wie bei TDD & BDD konzentrieren Sie / Ihr Team sich am meisten auf Test und Verhalten des Systems als auf die Code-Implementierung.
Ähnlich verhält es sich, wenn Systemanalytiker, Product Owner, Entwicklungsteam und natürlich der Code - Entitäten / Klassen, Variablen, Funktionen, Benutzeroberflächenprozesse - in derselben Sprache kommunizieren, die als Domain Driven Design bezeichnet wird
DDD ist ein Denkprozess. Bei der Modellierung eines Software-Designs müssen Sie den Geschäftsbereich / -prozess im Mittelpunkt der Aufmerksamkeit halten und nicht Datenstrukturen, Datenflüsse, Technologie, interne und externe Abhängigkeiten.
Es gibt viele Ansätze, um Systeme mit DDD zu modellieren
Domänenobjekt:
In sehr naiven Worten, ein Objekt, das
quelle
DDD (Domain Driven Design) ist ein nützliches Konzept zur Analyse der Anforderungen eines Projekts und zum Umgang mit der Komplexität dieser Anforderungen. Zuvor analysierten die Benutzer diese Anforderungen unter Berücksichtigung der Beziehungen zwischen Klassen und Tabellen, und tatsächlich basierte ihr Design auf Datenbanktabellen Beziehungen es ist nicht alt, aber es hat einige Probleme:
In großen Projekten mit komplexen Anforderungen ist dies nicht sinnvoll, obwohl dies eine großartige Möglichkeit zum Entwerfen für kleine Projekte ist.
Wenn Sie mit keiner technischen Person zu tun haben, die kein technisches Konzept hat, kann dieser Konflikt einige große Probleme in unserem Projekt verursachen.
DDD behandelt also das erste Problem, indem es das Hauptprojekt als Domäne betrachtet und jeden Teil dieses Projekts in kleine Teile aufteilt, die wir für Bounded Context kennen und von denen jeder keinen Einfluss auf andere Teile hat. Das zweite Problem wurde mit einer allgegenwärtigen Sprache gelöst, die eine gemeinsame Sprache zwischen Mitgliedern des technischen Teams und Produktbesitzern ist, die nicht technisch sind, aber über ausreichende Kenntnisse über ihre Anforderungen verfügen
Im Allgemeinen ist die einfache Definition für Domain das Hauptprojekt, mit dem die Eigentümer und andere Teams Geld verdienen.
quelle
Ich glaube, das folgende PDF gibt Ihnen einen Überblick. Domain Driven Design von Eric Evans
HINWEIS: Stellen Sie sich ein Projekt vor, an dem Sie arbeiten können, wenden Sie die kleinen Dinge an, die Sie verstanden haben, und sehen Sie sich Best Practices an. Es wird Ihnen helfen, Ihre Fähigkeit zum Designansatz für Mikrodienstarchitekturen zu erweitern.
quelle
Ich möchte die Antworten anderer nicht wiederholen, daher erkläre ich kurz einige häufige Missverständnisse
Sie sollten vermeiden, alles in Ihrem Projekt zu verwenden
Grundsätzlich liegt es daran, dass es zu viel Zeit und Mühe kostet. Es wird daher empfohlen, die gesamte Domain in Subdomains zu unterteilen und sie nur auf diejenigen mit hohem Geschäftswert anzuwenden. (zB nicht in generischer Subdomain wie E-Mail, ...)
Es ist keine objektorientierte Programmierung. Es handelt sich hauptsächlich um Problemlösungsansätze, und ( manchmal ) müssen Sie in Ihren Domänenmodellen keine OO-Muster (wie z. B. Gang of Four) verwenden. Einfach, weil es von Geschäftsexperten nicht verstanden werden kann (sie wissen nicht viel über Fabrik, Dekorateur, ...). Es gibt sogar einige Muster in DDD (wie das Transaktionsskript, das Tabellenmodul), die nicht zu 100% mit den OO-Konzepten übereinstimmen.
quelle