Synchronizacja klient-serwer nad REST
To pytanie dotyczy tego, co uważam za bardzo powszechny problem w rozwoju Androida / iOS, ale nie znalazłem jeszcze żadnego „standardowego” rozwiązania.
Powiedzmy, że mamy dość normalny REST API. Baza danych serwera zawiera (między innymi) tabelecountries
itowns
z relacją 1: N.
Klient (aplikacja mobilna) chce zachować lokalną migawkę tych dwóch tabel. Czyli gdy jest offline, może wykonywać zapytania, które normalnie byłyby wykonywane przez REST, np .: „uzyskać listę austriackich miast o populacji> = 100”?
Jak do tego podejść?
Pierwszy problem: spójność. Klient powinien mieć migawkę dwóch tabel. Jeśli klient pobierze aktualizacjetowns
i przejdzie do trybu offline, niektóre miasta mogą odwoływać się do kraju, którego nie ma w lokalnej kopiicountries
stół.
Drugi problem: klient powinien pobierać tylko nowe / usunięte / zmienione wiersze. Porzuć REST i użyj niestandardowego wywołania RPC, takiego jakget_updates_since(...)
?
Trzeci problem: w jaki sposób lokalne zmiany w kopii bazy danych klienta (ewentualnie w trybie offline) powinny być zsynchronizowane z serwerem? Niestandardowe połączenia RPC?