Ich versuche herauszufinden, wie all das zusammen funktioniert. Ich weiß, dass ein DTO im Grunde nur ein Container von Daten für die Domain-Objekte ist, um Formulare und ähnliches zu übergeben. Enthält das Domänenobjekt ein DTO oder haben das DTO und das Domänenobjekt nur dieselben Eigenschaften, die manuell zugeordnet werden?
Wenn ich meinen DTO-Typ in einem Dienst offenlege, wie verwende ich die Getter und Setter, ohne für jeden get / set-Vorgang auf dem Client einen Umlauf zu erstellen? Ich weiß, dass Sie einen langen Konstruktor haben können, aber das kann hässlich werden, wenn Sie mehr als 7 Eigenschaften haben.
Übergeben Sie bei der Implementierung des Repository-Musters das DTO oder das Domain-Objekt?
Ich denke, es ist besser, wenn das DTO einen Verweis auf das Domain-Objekt enthält, damit die DTO-Consumer das Domain-Objekt verwenden können. Wenn die DTO-Consumers das Domain-Objekt nicht mutieren müssen, muss der DTO jedoch möglicherweise die im Domain-Objekt eingekapselten Werte enthalten. Dies kann schwierig sein, da Sie möglicherweise eine tiefe Kopie des Domänenobjekts erstellen müssen.
Ich bin mir nicht sicher, wieso es ein Problem ist, dass das Aussetzen eines DTO-Typs als Dienst dazu führen würde, dass seine Getter / Setter einen Hin- und Rückflug machen würden. Wenn es sich bei dem Dienst um einen Remotedienst handelt, wird das zurückgegebene DTO trotzdem serialisiert und Ihre Getter / Setter erhalten die Kopie der Werte. Wenn der Dienst nicht entfernt ist, scheint es keinen großen Nachteil zu sein, eine "Rundreise" zu unternehmen, da sich der Client und der Dienst im selben Prozessraum befinden.
Tags und Links domain-driven-design