Ich beginne mein erstes PhoneGap-Projekt mit AngularJS. Es ist eine datenbankgestützte App, die eine REST-API als Backend verwendet. Zunächst einmal werde ich keine Daten lokal speichern, so dass es ohne Internet nicht viel zu tun gibt.Strategien zum Synchronisieren von Daten mit dem Server in PhoneGap
Ich möchte jedoch, dass es Daten lokal speichern und synchronisieren, wenn Internet verfügbar ist, da ich weiß, dass ich persönlich die Internetverbindungen auf meinem Telefon zeitweise deaktivieren (Flugzeuge, schwache Batterie), oder keine Balken haben . Ich habe mich gefragt, ob Sie mich auf einige gute Ressourcen für diese Art der Synchronisierung hinweisen könnten. Einige empfohlene Bibliotheken? Oder vielleicht einige Diskussionen über die Fallstricke und wie man sie umrundet. Ich habe ein bisschen gegoogelt, aber ich denke gerade jetzt, ich weiß nicht, welche Fragen ich stellen muss.
Auch meine Absicht, es zuerst Internet-abhängig zu bauen, und dann fügen Sie Synchronisieren .... Ist das eine gute Idee, oder schieße ich mich in den Fuß? Muss ich es von Anfang an synchronisieren?
Ich hatte jemanden vorgeschlagen, die App als lokal-nur zuerst zu erstellen, eher, dass der Internet-Teil zuerst, der eine gewisse Logik hat. Der Remote-Speicher ist mir wichtig. Ich weiß, dass die Entscheidung dort viel mit meinen Zielen für die App zu tun hat, aber von dem Standpunkt, dies zu bauen, mit dem Ziel, lokaler Speicher + Internetspeicher und Zweiwege-Synchronisierung, was wird einfacher? Oder macht es überhaupt einen Unterschied?
Zunächst denke ich über die Verwendung von UUIDs statt sequenziellen ganzzahligen Primärschlüsseln. Ich habe auch darüber nachgedacht, jedem Gerät eine ID zuzuweisen, die auf allen von ihm erzeugten Schlüsseln vorangestellt ist, aber das scheint heikel zu sein. Jeder verwendete beide Techniken? Gedanken?
Ich denke, ich brauche ein gutes System zu sagen, welche Daten synchronisiert wurden. Auf der Client-Seite, ich denke, alle Datensätze, die erstellt/bearbeitet werden, können für die Synchronisierung gekennzeichnet werden. Aber auf der Serverseite haben Sie mehrere Clients, das würde also nicht funktionieren. Ich denke, Sie könnten einen last_updated Timestamp haben, und alles synchronisieren, synchronisieren Sie die letzte erfolgreiche Synchronisierung.
Was ist mit Aufzeichnungen an mehreren Stellen bearbeitet? Wenn zwei Clients bearbeiten und dann synchronisieren möchten, haben Sie einige Unklarheiten beim Zusammenführen, z. B. beim Zusammenführen von Zweigen in git oder anderen Versionskontrollsystemen. Wie gehst du damit um? Ich denke, Git tut es, indem er Diffs von jedem Commit speichert. Ich denke, du könntest Diffs speichern? Je mehr ich darüber nachdenke, desto komplizierter klingt es. Überdenke ich es oder überlege es?
Was ist mit clientseitigem Speicher? Ich habe über SQLite oder das lokale PhoneGap-Speicherding (http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html) nachgedacht. Empfehlungen? Die Synchronisierung erfolgt über eine REST-API, wobei JSON ausgetauscht wird. Daher dachte ich über etwas nach, das die Daten tatsächlich als JSON speichert, oder etwas JSON-ähnliches, das leicht zu konvertieren ist, wäre schön. Auf der anderen Seite, wenn ich ein Daten-Diff-Format austauschen muss, muss ich das vielleicht speichern?
Hat jemand das benutzt? http://pouchdb.com/ scheint für viele meiner Bedenken relevant zu sein, würde aber gerne Ihre Gedanken hören, wenn Sie diesen Weg gegangen sind? – eimajenthat