Tips & Tricks: la sincronizzazione più veloce del west

by Giuseppe Lanzi on 26 marzo 2013

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:

  1. il dispositivo mobile svuota tutte le tabelle del database SQLite e poi ne effettua il backup su file con il metodo BackupDB;
  2. il dispositivo invia il file al server di sincronizzazione con UploadFile;
  3. 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;
  4. il server esegue nuovamente il backup su file e risponde al dispositivo;
  5. 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 :)

{ 3 comments… read them below or add one }

1 Riccardo Bianco 26 marzo 2013 alle 14:16

Molto utile, grazie

2 Mauro Marini 26 marzo 2013 alle 14:21

Arriva proprio al momento giusto. Grazie!

3 Giuseppe Lanzi 26 marzo 2013 alle 14:44

[Update] La prima versione versione dell’articolo non aveva il link corretto, adesso il progetto è scaricabile.

Leave a Comment

Previous post:

Next post: