Frage

Es ist oft eine Anforderung, ein Domain-Objekt auf verschiedene Weise auf der Benutzeroberfläche angezeigt zu haben; Listen, Suchergebnisse, Anzeigen und Bearbeiten von Seiten, sowie in Kopf- und Fußzeilen und Pop-ups. Typischerweise Sie mehrere verschiedene „Ansichten“ des Domain-Objekt haben, die jeweils mit unterschiedlichen Feldern angezeigt.

Die meisten Ratschläge scheinen zu sein, ein DTO zu verwenden, um die Daten zu erhalten, wenn Sie eine Untergruppe oder über benötigen. Es gibt eine Menge Aufwand bei der Aufrechterhaltung DTOs. Ist es ein schlechter Ansatz, einfach die Eigenschaften des Domain-Objekts zu füllen für jedes Szenario erforderlich. Zum Beispiel könnten Sie ein Profil verwenden, zu sagen, welche Eigenschaften enthalten sein sollten, zum Beispiel:

service.GetDomainObjects (int ListID, Profile.ListProfile); service.GetDomainObjects (string searchParam, Profile.SearchProfile);

War es hilfreich?

Lösung

Für mich ist das, was kommt darauf an, wo Sie die Overhead sein wollen, entweder Sie werden eine Reihe von verschiedenen Klassen haben, um Ihre DTOs darstellen, oder Sie werden eine Reihe von Methoden, die jeweils die gleiche Rück Domain-Objekt, aber mit unterschiedlichen Feldern ‚hydratisiert‘ zu werden.

Ein paar Fragen, die ich fragen würde, um die Entscheidung zu treffen sind:

  • was ist der Aufwand das gesamte Objekt in feuchtigkeitsspendend? Ist die zusätzliche Komplexität (von DTOs oder teilweise hydrierten Objekte) wirklich lohnt?
  • wird jemand anderes Ihren Code einsetzen möchten? Sie haben nicht die Menschen verwirren mit paritally hydrierten Objekte, DTOs könnte klarer sein, wenn die Leute kommen, Ihren Code zu erhalten.

Ich habe eine leichte persönliche Vorliebe für DTOs wie ich die langfristige Wartung des Systems fühlen wird einfacher. Wenn Ihr Ein-Mann-Band, oder ist dies eine einmalige App wegzuwerfen, kann ich absolut nicht ein paar zusätzliche Klassen einzuführen verstehen wollen, dass Ihr Code Krempel wird.

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