2010-01-21 5 views
6

Ho un database sul mio server che è grande circa 3 MB. Mi piacerebbe spedirlo con la mia applicazione per iPhone.Qual è il modo migliore per eseguire la sincronizzazione unidirezionale da un database lato server a iPhone?

La cosa più importante è che mi piacerebbe promuovere le modifiche al database (inserire, aggiorna, cancella) all'iPhone. Qual è il modo migliore per farlo? Voglio dire - cosa è necessario su - il server - il client (= iphone) - tra; come trasferire questi dati?

Sono abbastanza libero nell'usare tecnologie serveride; in questo momento, ho un database SQLite sul server pieno dei dati che vorrei sincronizzare con gli iPhone.

risposta

1

Provare a utilizzare i ganci Web.

Il concetto di WebHook è semplice. A WebHook è un callback HTTP: un HTTP POST che si verifica quando succede qualcosa ; una semplice notifica evento tramite HTTP POST.

Un'applicazione Web che implementa WebHooks invia un messaggio a un URL quando accadono determinate cose. Quando un'applicazione web consente agli utenti di registrare i propri URL, gli utenti possono quindi estendere, personalizzare e integrare il applicazione con il proprio personalizzato estensioni o anche con altre applicazioni in tutto il web. Per l'utente , WebHooks è un modo per ricevere informazioni preziose quando accade, invece di interrogare continuamente per che i dati e non ricevono nulla prezioso la maggior parte del tempo. I WebHooks hanno un potenziale enorme e sono limitati solo dalla tua immaginazione! (No, non può lavare i piatti Eppure..)

È possibile saperne di più su Webhooks qui: http://www.webhooks.org/ e http://webhooks.pbworks.com/

+0

hm ... suoni interessante. Capisco come funzionano gli hook Web (almeno, penso di sì). Ma in combinazione con iPhone ... come posso aggiornare gli utenti della mia applicazione? Ciò sarebbe possibile solo con la notifica push, giusto? Voglio dire - devono registrare i loro telefoni con la mia applicazione, e ogni volta che qualcosa cambia, devo fare una notifica push - o mi manca qualcosa? – swalkner

+0

Sì. La notifica push potrebbe funzionare. In entrambi i casi, devi dare ai tuoi utenti registrati una sorta di autenticazione. È possibile creare un lavoro CRON che invii le notifiche a un elenco di utenti (utenti che ovviamente sono registrati e autenticati) – feketegy

2

Quante volte è necessario aggiornare il database e quanto sono urgenti le modifiche?

Se gli aggiornamenti del database sono rari e non urgenti, farei controllare l'app per una nuova versione del database all'avvio e, se è stata modificata, scaricare l'intero nuovo file.

L'app scarica sempre un piccolo file di metadati da un URL noto all'avvio. Il file di metadati contiene un identificatore di versione per la versione più recente e un percorso in cui è possibile scaricare la versione del database. Se l'identificativo della versione è cambiato rispetto alla versione già installata, scaricherà la nuova versione. Se l'identificativo della versione non è cambiato, o se non può controllare, l'app può continuare a utilizzare la versione che ha.

Suggerimento per professionisti: se si desidera visualizzare una barra di avanzamento per il download, includere la dimensione del database nel file di metadati. Le reti cellulari hanno spesso proxy trasparenti che rimuovono l'intestazione Content-Length dalle risposte HTTP.

+0

purtroppo, gli aggiornamenti sono frequenti e piuttosto urgente ... – swalkner

1

chiedo se avete pensato di utilizzare un quadro di sincronizzazione per gestire il sincronizzazione. Se ti interessa puoi dare un'occhiata al progetto open source, il servizio di sincronizzazione di OpenMobster.È possibile effettuare le seguenti operazioni di sincronizzazione

  • bidirezionale
  • a senso unico client
  • a senso unico dispositivo
  • avvio

Oltre a questo, tutte le modifiche sono tracciati e sincronizzati automaticamente con il Cloud. Puoi avere la tua app offline quando la connessione di rete non funziona. Troverà tutte le modifiche e automaticamente in background lo sincronizzerà con il cloud quando ritorna la connessione. Fornisce anche la sincronizzazione come iCloud su più dispositivi

Inoltre, le modifiche nel cloud vengono sincronizzate tramite notifiche push, quindi i dati sono sempre aggiornati anche se sono memorizzati localmente.

Ecco un link al progetto open source: http://openmobster.googlecode.com

Ecco un link per iPhone App Sync: http://code.google.com/p/openmobster/wiki/iPhoneSyncApp

Problemi correlati