Als «domain-driven-design» getaggte Fragen

Domain-Driven Design (DDD) ist ein Ansatz zur Entwicklung von Software für komplexe Anforderungen, indem die Implementierung mit einem sich entwickelnden Modell verbunden wird.

3
DDD: Wo werden Domain Event Handler platziert?
Können Sie mir Ihre Meinung sagen, welche Ebene die richtige ist, um Domain-Event-Handler in DDD zu platzieren? Ich habe beispielsweise einen Anwendungsdienst zum Hinzufügen eines neuen Vertrags und möchte eine E-Mail-Benachrichtigung an die Kontaktperson senden, wenn der Vertrag hinzugefügt wurde. Dies gilt auch für den Anwendungsdienst oder den Domänendienst des …

6
DDD meets OOP: Wie implementiert man ein objektorientiertes Repository?
Eine typische Implementierung eines DDD-Repository sieht nicht besonders gut aus, zum Beispiel eine save()Methode: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Infrastrukturteil: package com.example.infrastructure; // imports... public class JdbcProductRepo implements …


2
Können persistenzunabhängige Objekte verzögertes Laden implementieren?
Persistence Ignorance ist eine Anwendung des Single-Responsibility-Prinzips. In der Praxis bedeutet dies, dass Domain Objects ( DO ) keinen Code in Bezug auf Persistenz enthalten sollten, sondern nur Domänenlogik. a) Ich gehe davon aus, dass der Code, der die unteren Schichten (dh die Persistenzschichten) berührt, außerhalb des Domänenmodells in anderen …

2
Wie kann man dieses Design näher an die richtige DDD bringen?
Ich habe seit Tagen über DDD gelesen und brauche Hilfe bei diesem Beispieldesign. Alle DDD-Regeln verwirren mich sehr, wie ich überhaupt etwas erstellen soll, wenn Domänenobjekte der Anwendungsebene keine Methoden anzeigen dürfen. Wo sonst kann man Verhalten orchestrieren? Repositorys dürfen nicht in Entitäten injiziert werden, und die Entitäten selbst müssen …

4
Vermeiden aufgeblähter Domänenobjekte
Wir versuchen, mithilfe eines DDD-Ansatzes Daten aus unserer aufgeblähten Service-Schicht in unsere Domain-Schicht zu verschieben. Wir haben derzeit eine Menge Geschäftslogik in unseren Diensten, die über den gesamten Ort verteilt ist und nicht von der Vererbung profitiert. Wir haben eine zentrale Domain-Klasse, auf die sich der Großteil unserer Arbeit konzentriert …

5
Was ist eine bessere Abstraktion, wenn das Repository-Muster für moderne ORMs (EF, nHibernate) übertrieben ist?
Ich habe kürzlich viele Argumente gegen die Verwendung des Repository-Musters mit leistungsstarken ORMs wie Entity Framework gelesen, da es neben der Unit of Work-Funktionalität auch Repository-ähnliche Funktionen enthält. Ein weiteres Argument gegen die Verwendung des Musters für eine Situation wie Unit-Tests ist, dass das Repository-Muster eine undichte Abstraktion ist, da …

2
Ist ein Domänendienst in DDD im Wesentlichen nur ein Fassaden- und / oder Vermittlungsmuster?
In Domain Driven Design kann die Domänenschicht mehrere (traditionelle) Dienste haben. Für die Benutzerdomäne haben wir beispielsweise Folgendes: Eine UserFactory, die Benutzerobjekte auf unterschiedliche Weise erstellt Ein UserRepository, das für die Interaktion mit den Persistenzdiensten in der Infrastrukturschicht verantwortlich ist Ist ein UserService in der Domänenschicht lediglich ein Vermittler und …

2
Ist die Isolierung von Domänen- / Persistenzmodellen normalerweise so umständlich?
Ich beschäftige mich mit den Konzepten für Domain-Driven Design (DDD) und fand einige Prinzipien seltsam, insbesondere in Bezug auf die Isolierung von Domain- und Persistenzmodellen. Hier ist mein Grundverständnis: Ein Dienst auf der Anwendungsschicht (der einen Funktionssatz bereitstellt) fordert Domänenobjekte von einem Repository an, das er zur Ausführung seiner Funktion …


1
Wie Add / Create * -Befehle in der CQRS + Event Sourcing-Architektur behandelt werden sollen
Ich möchte meine erste Anwendung mithilfe des CQRS-Musters zusammen mit Event Sourcing implementieren. Ich frage mich, wie die Erstellung aggregierter Wurzeln richtig gehandhabt werden sollte. Angenommen, jemand sendet den Befehl CreateItem. Wie soll damit umgegangen werden? Wo soll das Ereignis ItemCreated gespeichert werden? Als erstes Ereignis eines neuen Artikels? Oder …

2
CQRS + Event Sourcing: (ist es richtig) Befehle werden im Allgemeinen Punkt-zu-Punkt übertragen, während Domänenereignisse über Pub / Sub übertragen werden?
Ich versuche im Grunde, mich mit dem Konzept von CQRS und verwandten Konzepten zu beschäftigen. Obwohl CQRS Messaging und Event Sourcing nicht unbedingt beinhaltet, scheint es eine gute Kombination zu sein (wie aus vielen Beispielen / Blogposts hervorgeht, die diese Konzepte kombinieren). Würden Sie angesichts eines Anwendungsfalls für eine Statusänderung …

1
Architektur einer modularen Dienstanwendung
Ich möchte eine neue Lösung entwickeln, die von Natur aus sehr modular ist, und möchte eine Struktur erstellen, die dieses Design unterstützt, um eine einfache zukünftige Erweiterung, eine klare Trennung von Bedenken, eine Lizenzierung nach Modulen usw. zu ermöglichen. Das meiste, was ich habe Im Internet finden Sie Informationen zu …

2
Ausnahmen in DDD
Ich lerne DDD und denke darüber nach, in bestimmten Situationen Ausnahmen zu werfen. Ich verstehe, dass ein Objekt nicht in einen schlechten Zustand versetzt werden kann, daher sind hier die Ausnahmen in Ordnung, aber in vielen Beispielen werden auch Ausnahmen ausgelöst, wenn wir versuchen, einen neuen Benutzer mit vorhandener E-Mail …

6
DDD Injecting Services für Aufrufe von Entitätsmethoden
Kurzes Fragenformat Gehört es zu den Best Practices von DDD und OOP, Dienste in Entitätsmethodenaufrufe einzufügen? Langformat-Beispiel Angenommen, wir haben den klassischen Order-LineItems-Fall in DDD, in dem wir eine Domänenentität namens Order haben, die auch als Aggregatstamm fungiert, und diese Entität besteht nicht nur aus ihren Wertobjekten, sondern auch aus …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.