Ist DDD-Lite eine Mustersprache für die Abhängigkeitsinjektion?

17

Ich bin über Greg Youngs Vortrag gestolpert. 7 Gründe, warum DDD-Projekte scheitern, wo er etwas erwähnt, das er um 7:20 DDD-Lite nennt.

Zusammenfassend sagt er, dass einige DDD als Mustersprache (Entitäten, Repositorys, Wertobjekte, Services usw.) verwenden, ohne etwas anderes im Zusammenhang mit DDD zu tun. Er postuliert, dass 60% oder mehr der Domain-Modelle in .Net DDD-Lite sind. Er glaubt, dass DDD-Lite im Grunde genommen eine Sprache rund um die Abhängigkeitsinjektion aufbaut, etwas, das Sie nicht wirklich tun müssen. Er sagt, entweder machen Sie DDD ganz oder machen Sie etwas einfacher. Andernfalls behauptet er, dass eine Person all diese Arbeit zum Aufbau guter Abstraktionen leistet, jedoch ohne wirklichen Nutzen.

Ich muss zugeben, dass ich nicht so viel über DDD weiß, wie ich möchte, und ich habe noch nicht versucht, es zu verwenden. Ich habe auch Eric Evans Buch nicht gelesen. Ich interessiere mich viel mehr für Dependency Injection und viele, viele Bücher und Blogs zu diesem Thema verwenden Begriffe und Referenzkonzepte aus dem DDD-Buch von Eric Evans. Hier bin ich DDD-Konzepten ausgesetzt. Zu den Büchern, die ich gelesen habe, gehören:

  • Abhängigkeitsinjektion in .NET
  • Microsoft .Net: Architektur von Anwendungen für das Unternehmen
  • Brownfield-Anwendungsentwicklung in .NET

Wenn man Abhängigkeitsinjektion machen möchte, was sind einfachere Alternativen als "DDD-Lite"? Es hört sich für mich so an, als ob das Bauen von guten Abstraktionen sehr nützlich ist, unabhängig davon, ob man DDD-Lite-Konzepte verwendet. (Siehe Mark Seemanns Blogbeiträge: Schnittstellen sind keine Abstraktionen und auf dem Weg zu besseren Abstraktionen ). Es fällt mir schwer zu glauben, dass jeder, der Dependency Injection macht, zufällig auch vollwertige DDD macht (oder machen muss). Habe ich Greg Youngs Argumentation über DDD-Lite irgendwie falsch verstanden?

Matt
quelle

Antworten:

15

Abhängigkeitsinjektion und DDD sind zwei getrennte Konzepte. Für die Abhängigkeitsinjektion ist weder DDD erforderlich, noch ist für DDD die Abhängigkeitsinjektion erforderlich.

Viele DDD-Projekte schlagen fehl, weil sie die Muster auswählen, aber den Prozess hinter DDD vernachlässigen. Sie nehmen sich nicht die Zeit, um Geschäftsregeln zu extrahieren. Sie konzentrieren sich nicht auf das Domänenmodell und auf sorgfältige Abstraktionen. Sie schaffen keine allgegenwärtige Sprache.

Kurz gesagt: Ich denke, das ist ein Missverständnis

Saintedlama
quelle
4
+1 Die in Evans 'Buch beschriebenen Muster sind in einem viel breiteren Kontext immer noch wertvoll - solange man versteht, dass eine isolierte Anwendung nicht zu DDD führt.
Mark Seemann
1
Ja ich merke DI! = DDD. @MarkSeemann, also scheint Gregs Argument zu sein, dass die Leute sagen, sie machen DDD, wenn sie es nicht sind. Okay, das verstehe ich. Er argumentiert jedoch auch, dass die Verwendung von Abstraktionen wie in DDD (Aggregate, Repositorys, Domänenentitäten, Wertobjekte, Dienste usw.) nicht erforderlich ist, wenn diese nur zur Unterstützung einer abhängigkeitsinjektierten Architektur verwendet werden. Das ist der Teil, den ich nicht verstehe (was ist daran falsch?). Vielleicht ist dies ein Strohmann-Argument , da solche Dinge nicht nur dazu dienen, "eine Sprache um die Abhängigkeitsinjektion herum aufzubauen".
Matt
3
Greg hat teilweise recht: Die speziellen Muster in DDD haben keinen besonderen Bezug zu DI. In meinem Buch habe ich jedoch einen Teil der Terminologie aufgegriffen, insbesondere die Definition von Entity vs. Value Object vs. Service, da es wichtig ist, zu verstehen, was wo injiziert werden soll. Sowohl diese Terminologie als auch andere Muster wie Repository und Factory sind jedoch viel älter als das DDD-Buch. Daher klingt es für mich falsch, zu sagen, dass solche Dinge außerhalb von DDD unnötig sind. Dies kann davon abhängen, wie Sie DDD tatsächlich definieren.
Mark Seemann
2

Ich wette, Greg bezieht sich auf die einfache Anwendung, wenn eine Teilmenge von domänengesteuerten Entwurfsmustern anstelle des gesamten DDD-Ansatzes verwendet wird. Der Begriff DDD-Lite bezieht sich implizit auf das Buch http://www.infoq.com/minibooks/domain-driven-design-quickly , das früher unter DDD-Neulingen populär war, aber das ganze Bild verfehlt, indem es sich nur auf das konzentriert lokale Modellierungsentwurfsmuster.

Obwohl Abhängigkeitsinjektion als eine gute Sache angesehen wird, gibt es keine starke Korrelation zwischen DDD und DI.

ZioBrando
quelle