2012-04-04 6 views
2

Ich baue eine POS wie Android-App, die auch funktionieren muss, wenn Datenverbindung vorübergehend verloren geht.Allgemeine Architektur für Offline-Synchronisierung Android-Apps

Die Idee besteht darin, alle Transaktionen sofort dem Server zu melden, wenn Datenverbindung verfügbar ist. Wenn nicht, speichern Sie es lokal in SQLite und synchronisieren Sie es später, wenn die Verbindung verfügbar ist.

Der erste Plan bestand darin, einzelne Transaktionen in derselben allgemeinen DB-Struktur zu speichern, wie sie auf dem Server verwaltet werden. Da es jedoch so viele verschiedene Arten von Transaktionen und Beziehungen auf dem Server gibt, würde dies effektiv die gesamte DB-Struktur replizieren der Server am Telefon selbst.

Eine Alternative dazu ist, nur die letzten HTTP-Anfragen zu speichern, die verwendet werden, um den Server über die Änderungen zu informieren. Der Vorteil eines solchen Ansatzes ist, dass es nur eine Tabelle benötigt, um die URL, den Inhalt, die Methode usw. zu speichern. Aber es könnte einige Aufrufe geben, die Code für die Antwort benötigen, die als anonyme innere Klassen implementiert werden . Das einzige Problem bei diesem Ansatz scheint die Serialisierung dieser anonymen inneren Klassen zu sein, so dass sie auch nach einem (möglichen) Neustart des Telefons aus der Datenbank geladen und ausgeführt werden können.

Was wäre der beste Weg, dies zu implementieren? Option A oder Option B? Und wenn Option B, ist es wirklich möglich, anonyme innere Klassen zu serialisieren und zu entserialisieren (die hier effektiv als Schließungen verwendet werden)?

Antwort

1

Für Option A möchten Sie möglicherweise CouchDB für die Replikation von Geräten/Servern in Betracht ziehen.

Couchdb on Android

Verwandte Themen