I DTO delle API dovrebbero essere configurati per i clienti o essere universali?

0

Ho un progetto con un'app client desktop interna e un servizio API client sul lato server che parla con un database relazionale. Mi sembra di avere due scelte:

1) forma DTO alle viste del cliente, ad es. AccountOperviewInfoDto e AccountFullDetailsDto per uno scenario GUI master-dettaglio:

  • + viene trasferita una quantità ottimale di dati;
  • + le query sul database lato server sono più ottimali;
  • + sono necessarie meno conversioni / mapping di oggetti (dominio - > DTO);
  • - I DTO sono accoppiati a diversi paradigmi della GUI client (schermo grande desktop vs schermo piccolo mobile);
  • - l'API del client è accoppiata all'app client in termini di modifiche e implementazione.

2) rendere i DTO "universali" mantenendoli vicini al modello di dominio e quindi modellandoli alla GUI tramite gli oggetti viewmodel:

  • - viene trasferita una quantità non ottimale di dati;
  • - le query sul database lato server sono meno ottimali;
  • - sono necessarie più conversioni / mapping degli oggetti (dominio - > DTO - > viewmodel).
  • + DTO sono disaccoppiati da diversi paradigmi della GUI client (schermo grande desktop vs schermo piccolo mobile);
  • + l'API del client è disaccoppiata dall'app client in termini di modifiche e implementazione.

Qual è la migliore pratica se ce n'è? Ci sono altre scelte?

    
posta Den 03.11.2015 - 15:48
fonte

1 risposta

1

Assicurati di ottimizzare la cosa giusta.

Se stai scrivendo un MMO, la rasatura di un secondo di trasferimento o di un paio di byte su alcuni dati potrebbe essere significativa.

Per un'app interna all'azienda, la risorsa più importante è il tuo tempo . Se vai con la tua opzione 2 (DTO universali che non sono specifici per una vista) avrai una migliore possibilità di scrivere il codice una volta.

Se vai con la tua opzione 1 (DTO "sintonizzato" per una vista specifica), tornerai costantemente a questo codice per scrivere di più / modificare quelli che hai / aggiungi campi / rimuovi campi, e così via .

Raccomando vivamente di mantenere il codice semplice e breve (il che significa DTO generico) fino a quando test specifici hanno dimostrato che si è effettivamente verificato un problema di prestazioni.

    
risposta data 03.11.2015 - 15:58
fonte

Leggi altre domande sui tag