Offline / Online Datensynchronisation Design (Javascript)
Ich bin derzeit in den Prozess des Schreibens eine offline-webapp mit allen html5-goodies für die offline-Unterstützung. Aber ich bin jetzt angefangen zu denken, über das schreiben die sync-Modul, sicherzustellen, dass alle offline-Daten wird an den server gesendet und der server Daten an den client zurück. Jetzt bin ich sicher, dass dies getan wurde, vor, ich meine seine ein hübsches klassisches design-Problem, das wirkt sich auf mobilen Geräten und eine fülle von anderen Dingen. So Frage ich mich, kann jemand mir einige gute Ressourcen für das design für diese Art der Sache?
Mir jetzt wirklich nicht sein müssen, viel zu hoch mit diesem, ich meine, ich bin nicht der Handhabung mehrere Benutzer Zugriff auf dieselben Daten, und ich bin froh, dass Sie nicht zu merge-Konflikten (eben die neueste), aber trotzdem möchte ich ein design, dass wird mir erlauben, diese Optionen in der Zukunft.
Außerdem gibt es open-source-Projekte implementieren, diese Art der Sache? Ich bin nicht über-ripping-off someone else ' s code (falls Lizenz es erlaubt) und ich bin glücklich in den Hafen.
InformationsquelleAutor der Frage gatapia | 2010-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein plan für ein ähnliches design (noch nicht ausprobiert) ist, etwas zu verwenden, wie PouchDB zum speichern der Daten lokal und synchronisieren Sie Sie dann mit einem remote-couch-Instanz.
InformationsquelleAutor der Antwort kybernetikos
Ich hatte ein ähnliches problem. Ich habe mich entschieden, eine rein JSON-in-und out-Ansatz. Die Lösung, die ich bin dabei auf die form der Einreichung ist:
Dann habe ich eine Globale Ereignis-hooks für die online /offline-events. Wenn der user wieder online kommt, prüft es die Warteschlange, und wenn die queue-Elemente in es, es sendet Sie dann durch wie JSON POST-Anfragen.
Wenn Sie in Erster Linie daran interessiert, immer JSON-Daten Zwischenspeichern und es für die offline-Nutzung, dann werfen Sie einen Blick auf jquery.offline.
Die Herausforderung bei der Synchronisierung in beide Richtungen ist, dass Sie müssen aktualisieren Sie den lokalen Cache-Listen mit allen CRUD-Arbeit, die Sie gespeichert haben.
Möchte ich finden, einen allgemeineren Weg, dies zu tun.
InformationsquelleAutor der Antwort Junto
Check-out Derby, ein Knoten MVC-framework hat einige ziemlich süß Synchronisierung und Konfliktlösung bietet. http://derbyjs.com/
InformationsquelleAutor der Antwort frontendbeauty
in unserem team haben wir bereits die app im offline/online-Modus.
sind wir mit der nächsten folgenden Bibliotheken:
Mit rack-offline-wir sind caching aller Ressourcen-Dateien und jst-Vorlage zum Rendern von Inhalten auf der Seite. backbonejs und backbonejs-localStorage machen hilft MVC-Anwendung auf dem client. es ist ziemlich genial, Sie sollten es versuchen. wir sind immer auf der Verwendung von localstorage zum speichern von Daten. wenn wir es schaffen, die post zum Beispiel Modell-Objekt und speichern im "localStorage" wir sind auslösende Warteschlangen, die für die Synchronisation(auch wir haben durch timer-background worker für das automatische ausführen von sync-Prozess). Für jedes Modell haben wir separate sync-Klasse, die ausgeführt werden soll, indem queue sync-trigger. wenn Ihr navigator.onLine => true, wir senden Anfragen an den server mit Daten für die Aktualisierung. wenn Sie den browser schließen, trotzdem Sie nicht verlieren Ihre Daten, da Sie die Warteschlangen in den localStorage. in der nächsten Zeit client wird die Synchronisation der Daten auf dem ersten laden mit dem navigator.onLine => true.
How to use rack-offline-Sie können überprüfen, mein kleines Projekt in die github:
pomodoro-app
Glück!
InformationsquelleAutor der Antwort oivoodoo
Ich Stand vor dem gleichen problem und endete mit einer XML-Datei für die Speicherung und git, um änderungen zu verfolgen, und verpflichten Sie sich automatisch, sobald eine Verbindung verfügbar ist. Die Synchronisation erfolgt mit den üblichen git commit /push /pull-Befehle in ein shell-Skript und einem cronjob starten Sie das Skript. Dies würde auch funktionieren, wenn Sie speichern, JSON, in einer Textdatei.
InformationsquelleAutor der Antwort brains_at_work
Derzeit arbeite ich auf ähnliche webapp. Ich habe beschlossen, solche workflow:
InformationsquelleAutor der Antwort Victor
Wenn Sie sich für die Verwendung des potenziell schweren Ext JS /Sencha-framework, hat es eine schöne API-Daten mit offline - (z.B. localStorage) - Unterstützung und proxy-Ansatz für write-thru, um lokal dann server. Ich benutze Sencha Touch (mobile-spezifisch).
Für das Debuggen von web-Speicher, check-out Weinre.
InformationsquelleAutor der Antwort Will
DerbyJS waren wahrscheinlich die beste Lösung. Aber Derby ist noch in der Entwicklung und die offline-Unterstützung ist nur in Planung und noch nicht umgesetzt wurde. In der Google-Gruppe ( http://groups.google.com/group/derbyjs/browse_thread/thread/7e7f4d6d005c219c ) finden Sie zusätzliche Informationen darüber, was in Zukunft geplant ist.
InformationsquelleAutor der Antwort yannisgu
Würd ich persönlich empfehlen, schreiben Sie ein wrapper auf der Oberseite des indexedDB-API, die prüft, ob man online/offline.
Ich habe eine schriftliche kleine
Würden Sie haben, um zu erweitern, den tunnel zu setzen, die persistent-flag automatisch und auch tunnel die Synchronisation dieser Dokumente an die backend -
InformationsquelleAutor der Antwort Raynos