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

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top