Verzeihen Sie mir, wenn das folgende zu allgemein erscheint, aber ich habe versucht, es hoch zu halten, damit es in Übereinstimmung mit Ihrer Frage fällt. Ich weiß nicht, ob das, wonach du suchst, ein "Designmuster" an sich wäre. Es klingt, als ob Sie nach einem Synchronisationsparadigma/-system suchen. Beachten Sie, dass ich in dieser Antwort davon ausgehe, dass Sie sowohl Online- als auch Offline-Funktionen für Ihre Anwendung benötigen (da Sie explizit von der Synchronisierung gesprochen haben). Wenn ich mich irre, lassen Sie es mich wissen.
Insbesondere das, was Sie wahrscheinlich suchen, wird in der Regel mit zwei Dingen implementiert: 1) eine "verteilte" Datenbank, die offline auf den Client-Anwendungen wie den mobilen Apps, sowie auf allen Servern funktioniert) und 2) einen Synchronisations- und Konfliktlösungsmechanismus.
Ein sehr gutes Beispiel dafür ist das Quellcodeverwaltungstool Git. Git hat beide der oben genannten Eigenschaften. Erstens verwendet es eine Datenbank (z. B. das Dateisystem eines Git-Projekts), die verteilbar ist (z. B. kann das Projekt von einer Entwickler-Workstation zu einer anderen kloniert und unabhängig bearbeitet werden). Zweitens hat es einen Mechanismus zur Synchronisation und Konfliktlösung. Das heißt, wenn ich versuche, Änderungen von der Arbeitsstation eines Kollegen zu synchronisieren (z. B. automatisch oder manuell), können die Unterschiede zwischen Code und Code zusammengeführt werden.
Ein anderes Beispiel, vielleicht sogar relevanter Ihre Anwendung ist Evernote. Wenn ich mich nicht irre, verwendet Evernote die gleiche Art von Paradigma (eine Flat-File-Datenbank), um Dokumente zu synchronisieren, und hat Desktop-Clients, eine Website und mobile Clients.
Dies bedeutet nicht, dass Sie eine Flat-File-Datenbank verwenden müssen. Sie können genauso gut eine relationale oder andere Datenbank verwenden. Abhängig von der Art der Daten, die Sie speichern und synchronisieren möchten, können Sie möglicherweise mit einer sehr einfachen Konfliktlösung fertig werden. (Wenn Sie beispielsweise nur Statusaktualisierungen, Stimmenzählungen usw. speichern, wählen Sie vielleicht nur den neuesten Eintrag in der Datenbank aus.)
Kurz gesagt, scheinen die Tools, die ich erwähnt habe, dieser Art zu folgen workflow:
- Wenn Sie eine Sitzung in der Client-Anwendung starten, synchronisieren oder "aktualisieren" Sie den Client, indem Sie online gehen und neue Daten abrufen. Hier identifizieren und lösen Sie Konflikte zwischen den Daten auf dem Client und den Daten auf dem Server oder der Cloud.
- bearbeiten oder erstellen, um Daten "offline" auf dem Client, sei es auf der Website, mobile app etc.
- synchronisieren oder "update" die Wolke, indem Sie online und drücken Sie die Daten
geändert
Meinst du * Anwendungseinstellungen * für eine Anwendung, die sowohl online als auch als verfügbar ist native Anwendung auf verschiedenen Geräten?Wenn nicht, über welche Art von * Einstellungen * redest du? Wenn ja, um welche Art von Anwendung handelt es sich, und möchten Sie nur "Einstellungen" (vermutlich eine kleine Anzahl einfacher Datenobjekte) oder komplexere Anwendungsdaten synchronisieren? – Ergwun
Ja Anwendungseinstellungen wie mehrere 'Likes' und 'Abneigungen' von verschiedenen Dingen recht einfache Objekte Strings im Grunde. In einer Verbraucher-App, die auf verschiedenen Online- und Offline-Geräten verfügbar ist. Etwas wie MobileMe oder Google Sync. Es kann nicht garantiert werden, dass ein Gerät jeden Tag online ist und synchronisiert wird. Die Dinge werden auf jedem Gerät hinzugefügt und gelöscht. – Dan