Domanda

In Livello di dominio o strato di accesso ai dati?

È stato utile?

Soluzione

La motivazione principale per DTOs è quello di presentare un'interfaccia su misura per un altro strato (tipicamente, lo strato di presentazione). Ad esempio, una schermata di inserimento dei dati può avere bisogno di alcuni bit di dati da un oggetto utente oltre ad alcuni pezzi da un Ordine, ecc In questo caso, il dominio a DTO dovrebbe accadere al livello cui il livello di presentazione invoca, cioè, tipicamente uno strato di "servizio".

Non ci sono librerie come Bulldozer là fuori che automatizzano il lavoro sporco di conversione tra i modelli di dominio e DTOs.

La chiave tolgono è DTOs hanno lo scopo di astrarre i dati (non la logica di business) di ricchi oggetti del modello di dominio - quindi, DTOs dovrebbero essere riconvertiti in oggetti dominio il più presto possibile (a livello di servizio), in modo che il resto del i livelli di applicazione possono lavorare con oggetti del dominio più ricchi (dati e la logica di business)

Altri suggerimenti

Io non sono un gran fan di DTOs, ma io dico non farlo nel livello dati. Le offerte strato dati con oggetti del modello e la loro persistenza. Perchè paio con altri strati di portare DTOs in esso? Mi piacerebbe mapparli da qualche altra parte, probabilmente tra i livelli di servizio e interfaccia utente, proprio nel punto in cui si incrociano il confine tra dove sono creati e dove sono utilizzati.

Mettendo questo nel contesto MVC, se avete sia strato controllori e dei servizi si dovrebbe mettere nel controller. Questo sarebbe un DTO più vicino al livello di visualizzazione e consentire il livello di servizio di giocare con solo oggetti di dominio, evitando possibile confusione con altri modelli.

Il DTO sé è in realtà il modello MVC (spiegato qui: https://stackoverflow.com/a/1058186 ).

Di seguito è un tutorial raccomandato che schiaccia il controllore, livello di servizio e concetti DTO insieme (in Java utilizzando framework Spring, ma il concetto è chiaro per altre piattaforme): https: //www.baeldung. com / entità-to-e-da-dto-per-un-java-primavera-applicazione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top