L’esperienza utente è la caratteristica più importante di un’app di successo. Essa viene percepita come buona quando è funzionale, semplice e veloce. Per quanto riguarda la velocità, c’è un trucchetto che voglio suggerirvi per ottimizzare la sincronizzazione dati fra app mobile e server centrale.
Senza alcuna operazione aggiuntiva, il framework di Instant Developer riduce al minimo la quantità di dati scambiati con il server, operando in modo differenziale e parzializzato. L’unico caso in cui si può dover aspettare è durante la prima sincronizzazione, quando il database del dispositivo è completamente vuoto e va popolato da zero. Ci sono 500.000 oggetti da sincronizzare? Allora il dispositivo riceverà dal server un XML con 500.000 nodi e per altrettante volte effettuerà gli inserimenti su SQLite.
In questo caso è possibile usare un metodo più rapido: invece di trasferire ogni singolo oggetto, durante la prima sincronizzazione è possibile farsi restituire dal server l’intero database in un unico file, da ripristinare sul dispositivo in un colpo solo. I passi dell’operazione sono questi:
- il dispositivo mobile svuota tutte le tabelle del database SQLite e poi ne effettua il backup su file con il metodo BackupDB;
- il dispositivo invia il file al server di sincronizzazione con UploadFile;
- il server effettua il restore del database vuoto con RestoreDB e lo popola con i dati che devono arrivare all’utente tramite le opportune query;
- il server esegue nuovamente il backup su file e risponde al dispositivo;
- il dispositivo mobile scarica il file contenente il database appena popolato ed esegue il restore.
E il gioco è fatto. Per darvi un’idea, nei casi in cui l’abbiamo usato questo metodo è risultato 10 volte più veloce di quello automatico.
So che molti di voi stanno pensando “facile a dirlo, ma come faccio a farlo?” ed è proprio questo che ho preparato un progetto di esempio per mostrarvi come fare.
Buon lavoro 🙂