Diciamo che abbiamo una tabella di utenti che memorizza:
- Id,
- Nome,
- Cognome,
- E-mail,
- Indirizzo,
- Città,
- Telefono e
- mobile
Supponiamo che il nostro cliente abbia bisogno delle seguenti informazioni, in punti separati:
- Nome utente,
- Nome utente ed email,
- Indirizzo postale dell'utente e
- Numero di telefono dell'utente
Possiamo ovviamente sviluppare un insieme di funzioni (nel livello di servizio) come:
- getUserName (id), che restituisce il nome e il cognome,
- getUserNameAndEmail (id), che restituisce il nome e il cognome, più
email,
- getUserPostalAddress (id) ... e
- getUserPhone (id) ...
o potremmo sviluppare solo una funzione:
- getUserInformation (id), che restituirebbe tutte le informazioni dell'utente indipendentemente da dove è necessario dove.
Non c'è nessuna ragione tecnica ovvia per scegliere un metodo rispetto all'altro poiché entrambi hanno meriti chiari: il primo, trasferiamo solo i dati di cui abbiamo bisogno da un server all'altro, ma nel secondo modo creiamo solo una funzione e riutilizzalo ogni volta che abbiamo bisogno di informazioni sull'utente.
È una questione di dati volume e larghezza di banda. Se il client e il server sono collegati via Internet, e i nostri dati sono grandi, probabilmente dovremmo scegliere il primo metodo, in quanto non vogliamo che il cliente subisca ritardi non necessari. Ma se il client e il server si trovano su una rete locale o su una rete ad alta velocità, il secondo metodo è probabilmente il modo migliore per andare, dato che guadagniamo un po 'di tempo per lo sviluppo.
Ovviamente i nostri dati possono essere estremamente grandi e il primo metodo è preferibile anche su una rete locale, quindi per capire chiaramente perché il tuo team di sviluppo ha scelto le loro pratiche devi prima capire i dati con cui hai a che fare. Trovare (chiedere) alcune metriche concrete sarebbe un buon primo passo. Molto probabilmente scoprirai che i tuoi grassi dati risolvono più problemi di quelli creati.