Oggetti dati per ogni livello (oggetti DTO vs Entità vs Risposta)

2

Diciamo che sto costruendo un'applicazione web per il cliente (in Spring Boot 2), che espone anche punti finali di riposo. Sto modellando la mia applicazione su 3 livelli.

  1. a) UI - CustomerDTO

    b) REST - CustomerRESTResponse / CustomerRESTRequest

  2. Servizio - CustomerDTO

  3. Dati - Customer (Entità)

Ogni livello deve avere la propria rappresentazione dell'oggetto business? Se l'entità è quasi uguale al DTO, allora a cosa serve?

    
posta Neo 05.04.2018 - 12:23
fonte

1 risposta

3

Qui non c'è una risposta "corretta". Si tratta davvero di trovare i compromessi di cui sei soddisfatto.

La condivisione di un modello su più livelli consente l'accoppiamento per la velocità di sviluppo. Ti permetterà di far funzionare il tuo codice più velocemente, ma abbinerà intrinsecamente tutti i tuoi strati. Una modifica al modello nel livello Servizio influirà sui modelli che l'utente API vede.

D'altro canto, avere modelli dedicati per ogni livello aumenta i tempi di sviluppo, ma disaccoppia i tuoi livelli. Se apporti una modifica a un modello nel livello di servizio, non ricade automaticamente sugli altri livelli. Ciò riduce il rischio di rompere inavvertitamente le cose in altri livelli o di divulgare inavvertitamente informazioni non necessarie ai consumatori dell'API o al database.

Il rovescio della medaglia qui è, come detto prima, il costo aggiuntivo di sviluppo anticipato, così come il costo aggiuntivo richiesto quando il modello cambia effettivamente do deve applicarsi ad altri livelli.

Quindi stai scambiando tra accoppiamento lento e velocità di sviluppo.

Does every layer need to have it's own business object representation?

No, non richiede a

Se consideri la velocità di sviluppo rispetto ai costi di manutenzione, la condivisione di un modello su più livelli è una buona scelta.

D'altro canto, la maggior parte dei costi del progetto software sono in fase di manutenzione. Quindi organizzare il tuo codice per semplificare la manutenzione potrebbe farti risparmiare tempo e denaro a lungo termine.

Dovrebbe ogni livello ha la propria rappresentazione dell'oggetto business?

La risposta dipende davvero da cosa si sta ottimizzando.

    
risposta data 05.04.2018 - 13:21
fonte

Leggi altre domande sui tag