Ich versuche, mit DDD aufzustehen und es scheint einige Einschränkungen durch den Technologie-Stack in meinem Fall ASP.Net auferlegt, die Sie darüber nachdenken, wie die Dinge funktionieren zusammen. Zum Beispiel lassen Sie uns sagen, dass ich eine reiche Klasse von ShoppingCart erstellt haben und meine ShoppingCart hat zwei Methoden der AddItem (String Sku) und RemoveItem (String Sku). Jetzt habe ich vielleicht eine Menge Logik in diesen beiden Methoden mit vielen meiner Geschäftsregeln Validierung.Wie man Rich Domain Model mit ASP.Net verbindet MVC
Was passiert, wenn ich mein ShoppingCart mithilfe von ASP.Net MVC an die Benutzeroberfläche binden möchte? Idealerweise möchte ich die Methoden AddItem und RemoveItem aufrufen, wenn der Benutzer ein Element auf der Benutzeroberfläche hinzufügt oder entfernt, sodass ich alle Regeln überprüfen kann. Normalerweise binden wir die Benutzeroberfläche jedoch an View Models (POCO-Klassen). Wenn der Benutzer den Einkaufswagen von der Benutzeroberfläche speichert, erhalte ich eine Liste von POCO-Klassen, die ich nun meinem eigentlichen Geschäftsobjekt zuordnen muss. Sollte ich über jedes Element iterieren und es aus vorhandenen Daten verfolgen und AddItem und RemoveItem Methoden jetzt aufrufen?
In diesem Fall muss ich eine Instanz meines Domänenobjekts für diesen Benutzer im Speicher behalten, damit ich Operationen darauf ausführen kann. Selbst dann werde ich einen Großteil der Logik im Controller haben, um zu entscheiden, welche Methoden das Business-Objekt aufrufen soll.
Je mehr ich über diese Zeilen nachdenke, desto verwirrender wird es, weil das Problem nicht auf Winforms passieren würde, wo Sie die entsprechenden Methoden auf dem Domain-Objekt einfach von verschiedenen Ereignissen aus aufrufen können.
Was vermisse ich in diesem ganzen Bild, damit DDD so funktioniert, wie es sollte?
Selbst in Winforms würden Ihre Domain-Entitäten nicht für immer im Speicher bleiben. Sie würden aus der DB geladen werden, wenn sie gebraucht werden, und irgendwann würden sie hoffentlich bestehen bleiben und Müll eingesammelt werden. – guillaume31