Sollte POCOs von DTOs oder besser abgeleitet werden nicht wahr?
-
13-09-2019 - |
Frage
Wenn Sie eine n-Tier-Lösung zu schaffen, ich will nicht meine Business-Objekte belichten, aber DTO verwenden statt dessen. Auf der anderen Seite möchte ich nicht doppelt auf Objekte definieren und Copy-Code die ganze Zeit schreiben.
Nun meine Idee wäre DTOs zu schreiben, die alle notwendigen Felder und Eigenschaften enthalten, aber keine Logik (nur Zustand).
Dann würde ich meine Business-Objekte aus dieser DTOs ableiten, sie mit meiner Business-Logik erstreckt, die Arbeit an den DTO Basisklassen Eigenschaften. Diese Objekte auch würden die Objekte in der ORM beharrte verwendet (NHibernate).
Mit diesem Ansatz auf der Server-Seite ich auf den Business-Objekten arbeiten konnte und geben sie direkt an den Client (sie stammen, so boden gießbaren). Ich würde nicht gezwungen werden, meine Business-Logik auf diese Weise zu und eine Menge Code speichern.
Denken Sie, dass Ansatz sinnvoll ist?
Grüße,
Sebastian
Lösung
Sie sollten die folgenden Punkte beachten:
“..., weil die DTO nicht bewusst die Aufbewahrung Domain-Objekte können Sie wiederverwenden die DTO in verschiedenen Kontexten. Ebenso wollen Sie nicht die Domäne Objekte über die DTO zu wissen, weil das kann bedeuten, dass Ändern der DTO würde erfordern, Code zu ändern in der Domain-Logik , die zu einem führen würde Wartung Alptraum.
Die beste Lösung ist es, die Assembler Muster verwenden , die kehrt DTOs von Geschäftsobjekten und umge schafft. Assembler ist eine spezielle Instanz des Mapper Muster auch in den genannten Patterns of Enterprise Application Architecture .... "
Muster und Praxis: Data Transfer Object
Auch habe ich es selbst nicht verwendet, aber Sie können AutoMapper als Gut.
Andere Tipps
Klingt für mich vernünftig. In Linq to SQL, sind Business-Objekte aus der DTO durch die Verwendung von Teilklassen abgeleitet.
Haben in mind „Dann würde ich meine Business-Objekte aus dieser DTOs ableiten“, dass DTOs von BO anders aussehen könnte sie Eigenschaften von 2 oder 3 BO enthalten könnten