Если я правильно понимаю, для меня это не похоже на проблему синхронизации данных, когда вы хотите синхронизировать две базы данных. больше похоже на то, что вам нужен надежный механизм, позволяющий клиенту вызывать функции на сервере в среде, где соединение нестабильно, и, если соединение отсутствует в данный момент, вы хотите, чтобы функция вызывалась, как только соединение возвращается вверх.
Если я правильно понимаю, это один из вариантов. в противном случае это, вероятно, не поможет.
Это очень короткий ответ на глубокую проблему, но у нас была похожая ситуация, и именно так мы ее обрабатывали.
У нас есть клиентское приложение, которое должно отслеживать некоторые данные на ПК в магазине. Когда происходят определенные события, это клиентское приложение должно обновить наш сервер в корпоративных офисах, предпочтительно в режиме реального времени. Однако соединение не является надежным на 100%, поэтому нам необходим подобный механизм.
Мы решили эту проблему, пытаясь записать на сервер через веб-сервис. Если при вызове веб-службы произошла ошибка, команда сериализуется в виде XML-файла в папке с именем «ожидает загрузки».
В нашем клиентском приложении есть подпрограмма с таймером, установленным на каждые n минут. Когда таймер истекает, он проверяет наличие файлов XML в этой папке. Если он найден, он пытается вызвать веб-службу, используя информацию, сохраненную в файле, и так далее, пока он не будет успешным. При успешном вызове файл XML удаляется.
Звучит хакерски, но это было просто закодировать и работало безупречно уже пять лет. На самом деле это было наше самое беспроблемное приложение, и мы успешно применили этот шаблон в других местах