L'approccio migliore per creare un servizio mobile disponibile anche quando la connessione cade?

0

Speriamo che questa domanda sia una buona soluzione per P.SE dato che si tratta di una domanda concettuale a livello di lavagna "come può essere fatto".

Sto provando a creare un prodotto che deve essere disponibile a qualcuno in movimento con un dispositivo mobile quando la connessione potrebbe essere piuttosto scarsa (a causa del viaggio tra le città in cui la copertura 3G è più strong).

Per semplicità, supponiamo che l'applicazione sia una rubrica.

L'utente deve essere in grado di aggiungere / rimuovere / modificare tutti i contatti nell'indirizzo indipendentemente dallo stato della connessione, quindi tali modifiche vengono ripetute su un DB server centrale ogni volta che la connessione diventa disponibile (e tutte le modifiche apportate sul server dopo la connessione rilasciato anche scaricato).

Originariamente stavo costruendo l'applicazione con PHP / Symfony lavorando con pagine statiche ma questo nuovo requisito "mobile" mi ha fatto ripensare alla mia tecnologia front-end.

Ora sto cercando di usare EmberJS per il mio frontend (scarica tutti i template frontend necessari con la richiesta iniziale, poi aggiorna solo le parti dinamiche sembra che si addicesse alla mia applicazione meglio che servire un'intera pagina statica (e risorse) per ogni richiesta).

Ho implementato Ember-Data con l'adattatore REST standard che funziona perfettamente con la mia già esistente API Symfony2, quindi ho notevolmente ridotto la quantità di dati inviati / ricevuti e il "feeling" reattivo del app, ma devono ancora affrontare il mio scenario "senza connessione disponibile".

Istintivamente, sono attratto dalla funzionalità LocalStorage di HTML5, ma è possibile vedere la sincronizzazione dei dati tra la memoria locale e il server DB centrale come un gigantesco mal di testa.

Diciamo che aggiungo "Bob Smith" alla rubrica dal mio cellulare quando la connessione è attiva. La connessione cade. Cambio il nome in "Bob Jones" e poi cambio il nome in "Fred Smith" usando un desktop con una connessione stabile. Quando il cellulare si riconnette, quale aggiornamento ha la precedenza?

Ho visto questo domanda sull'utilizzo di più adattatori di dati (REST e LocalStorage) con Ember e sembra che mi trovi in un mondo di dolore. Dovrei semplicemente creare una versione responsive dell'app / servizio con l'adattatore Ember / REST, quindi eseguire il rollover delle app mobili native per la versione mobile? La gestione della persistenza dei dati sarà più facile da gestire come un'app nativa?

    
posta Anonymous 08.05.2013 - 12:41
fonte

1 risposta

2

Il requisito "nessuna connessione" mi fa pensare che una soluzione basata sul web non sia la soluzione migliore qui. Potresti farlo funzionare se la connessione è stata persa dopo che è stata visualizzata la pagina iniziale, ma cosa succede se l'utente ha acceso il dispositivo in un'area senza copertura.

La soluzione migliore, a mio parere, sarebbe un'app nativa che memorizza i dati localmente e tenta di sincronizzarli periodicamente con il database centrale. Se durante tale sincronizzazione viene rilevato un conflitto, l'app dovrebbe chiedere all'utente di risolvere il conflitto.

Potrebbe anche valere la pena esaminare le app native esistenti che sono simili a quelle che stai creando e vedere in che misura supportano già la sincronizzazione con un server esterno. Se sei fortunato, devi solo implementare il lato server di un protocollo di sincronizzazione standard e avere una soluzione perfettamente funzionante.

    
risposta data 08.05.2013 - 13:55
fonte

Leggi altre domande sui tag