Я работаю над созданием веб-приложения, которое синхронизируется с клиентом iOS. В настоящее время я пытаюсь выяснить, как это происходит. Я придумал следующие два направления:методология синхронизации клиент-сервер [теоретическая]
У меня есть довольно простое веб-приложение для сервера со списком элементов. Они упорядочены по дате, и такая синхронизация заказа не имеет значения.
Одно направление, которое я рассматриваю, - это позволить клиенту иметь дело с синхронизацией. У меня уже есть API, который позволяет клиенту получать данные, а также выполнять определенные действия по ним, такие как обновление, добавление или удаление отдельных элементов. Я рассматривал: 1) каждую синхронизацию, запрашивающую сервер для всех элементов, измененных с момента последней успешной синхронизации, и обновления локальных записей на основе того, что возвращается сервером, и 2) создания постоянной очереди запросов на создание/удаление/обновление на клиента и сохраняя их до подтверждения сервером.
Риск с этим подходом заключается в том, что я в основном прошу каждую сторону отправлять изменения на другую сторону, надеясь, что она работает плавно, но рискуя отвлечься в какой-то момент. Тем не менее, это, вероятно, будет более эффективным с пропускной способностью.
Другое направление, которое я рассматривал, было более традиционной моделью. У меня был бы «синхронный» процесс, при котором клиент отправил бы весь свой список на сервер (или подмножество с последней измененной синхронизацией), сервер будет обновлять данные на сервере (фиксируя конфликты, сохраняя последний измененный элемент, и сохранение удаленных элементов с удаленным = 1 полем), и сервер вернет обновленный список элементов (с момента последней успешной синхронизации), который клиент затем заменит своими данными.
Мысли?