it-swarm.com.de

Datenobjekte für jede Ebene (DTO vs Entity vs Response-Objekte)

Angenommen, ich erstelle eine Kunden-Webanwendung (in Spring Boot 2), die auch Restendpunkte verfügbar macht. Ich modelliere meine Anwendung in 3 Ebenen.

  1. a) Benutzeroberfläche - CustomerDTO

    b) REST - CustomerRESTResponse/CustomerRESTRequest

  2. Service - CustomerDTO

  3. Daten - Customer (Entität)

Muss jede Ebene eine eigene Geschäftsobjektdarstellung haben? Wenn die Entität fast mit dem DTO identisch ist, wozu dient sie dann?

6
Neo

Hier gibt es keine "richtige" Antwort. Es geht wirklich darum, die Kompromisse zu finden, mit denen Sie zufrieden sind.

Wenn Sie ein Modell über mehrere Ebenen hinweg teilen, wird die Kopplung gegen die Entwicklungsgeschwindigkeit ausgetauscht. Auf diese Weise können Sie Ihren Code schneller zum Laufen bringen, aber alle Ebenen werden von Natur aus miteinander verbunden. Eine Änderung des Modells in der Service-Schicht wirkt sich auf die Modelle aus, die der API-Verbraucher sieht.

Auf der anderen Seite verlängert die Verwendung dedizierter Modelle für jede Ebene die Entwicklungszeit, entkoppelt jedoch Ihre Ebenen. Wenn Sie ein Modell in der Service-Ebene ändern, wird es nicht automatisch in die anderen Ebenen übertragen. Dies verringert das Risiko, dass versehentlich Dinge in anderen Ebenen beschädigt werden oder versehentlich unnötige Informationen an API-Konsumenten oder die Datenbank weitergegeben werden.

Der Nachteil hierbei ist, wie bereits erwähnt, die zusätzlichen Vorabentwicklungskosten sowie die zusätzlichen Kosten, die erforderlich sind, wenn die Modelländerungen tatsächlich gelten müssen andere Schichten.

Sie handeln also zwischen loser Kopplung und Entwicklungsgeschwindigkeit.

Muss jede Ebene eine eigene Geschäftsobjektdarstellung haben?

Nein, es muss nicht .

Wenn Sie Wert auf Entwicklungsgeschwindigkeit und Wartungskosten legen, ist die gemeinsame Nutzung eines Modells über mehrere Ebenen hinweg eine gute Wahl.

Andererseits befinden sich die meisten Kosten für Softwareprojekte in der Wartungsphase. Wenn Sie also Ihren Code organisieren, um die Wartung zu vereinfachen, können Sie langfristig Zeit und Geld sparen.

Sollte jede Ebene ihre eigene Geschäftsobjektdarstellung haben?

Die Antwort hängt wirklich davon ab, wofür Sie optimieren.

7
MetaFight