Кошмар синхронизации – можно ли использовать репликацию слиянием (или RDA) между двумя экземплярами SQL CE без IIS?

StackOverflow https://stackoverflow.com/questions/1291346

Вопрос

Мы столкнулись со следующей проблемой, которая предполагает синхронизацию следующего:

  • 1 централизованный сервер (IIS/MSSQL 2005)
  • Многие клиенты WPF для настольных компьютеров, распространяемые ClickOnce.
  • Множество мобильных клиентов – (Windows CE)

замещающий текст http://img502.imageshack.us/img502/8246/deployment.png

С этими жесткими ограничениями:

  • все отношения синхронизации являются двунаправленными
  • настольные и мобильные узлы требуют автономного режима
  • мобильные узлы не могут синхронизироваться с центральным сервером, но должны синхронизироваться с узлами настольных компьютеров через USB.Узлы настольных компьютеров действуют как серверы для мобильных клиентов, а не как центральный сервер.Затем обновления с мобильных узлов должны передаваться на центральный сервер посредством синхронизации с настольным компьютером, а затем синхронизации этого рабочего стола с центральным сервером. уф.

Противный.

Мы знаем, что для синхронизации рабочего стола и сервера можно использовать репликацию слиянием: сервер является провайдером, рабочий стол — подписчиком, и все хорошо.НО как насчет синхронизации мобильных и настольных узлов?Казалось бы, Десктоп не может быть издателем без SQL-сервера + ИСС, верно?Мы можем только развернуть MSSQL CE на рабочем столе.

Даже если бы это было так, мог бы узел быть одновременно подписчиком и издателем?Я подозреваю, что эта схема не поддерживается архитектурой репликации слиянием - по-видимому, единственной поддерживаемой моделью является концентратор и луч.

Мы пытаемся определить, можем ли мы исключить RDA или репликацию слиянием в качестве возможного решения - если да, то мы, вероятно, воспользуемся MS Sync Framework.

Возможно, есть другие технологии, которые мы могли бы рассмотреть?

Спасибо всем,

Эшли

ОБНОВЛЯТЬ:мы только начали экспериментировать с MS Sync Framework, и это потрясающе!

Это было полезно?

Решение

По причинам, не связанным напрямую с вашим конкретным вопросом, я думаю, вы можете пойти дальше и исключить RDA/Merge Replication как возможное решение.Microsoft не афиширует это (по понятным причинам), но репликация слиянием не является на 100% надежной в условиях, когда сетевое соединение может быть разорвано в середине процесса репликации (что довольно часто случается с клиентами Windows Mobile).

Результатом этой проблемы является то, что изменения, внесенные в клиентские базы данных, иногда не полностью распространяются на главную базу данных, но вы не получаете никаких видимых признаков того, что это произошло.Как вы понимаете, это плохо, особенно если вы продали своему клиенту это решение, исходя из предположения, что RDA работает так, как рекламируется.Единственное краткосрочное решение этой проблемы, которое мы нашли, заключалось в реализации очень неуклюжего процесса двойной избыточности, чтобы гарантировать, что каждая запись, добавленная или измененная на клиенте, без ошибок дошла до сервера.Долгосрочным решением было никогда больше не использовать RDA ни для чего.

Возможно, эту проблему и исправили в последних версиях RDA (у нас проблема возникла с последней версией 2 года назад), но я никогда не узнаю (один раз укусил, дважды постеснялся).

Обновлять:кстати, многие люди, с которыми я говорил об этом (включая специалистов службы поддержки Microsoft), отрицали, что это может быть правдой, но это очень легко проверить:добавьте кучу данных на клиенте, затем запустите репликацию, затем выдерните USB-кабель из устройства (при условии, что ваш клиент — Windows Mobile, подключающийся через ActiveSync), находясь в середине процесса.

Если я выгляжу слегка раздосадованным, то отчасти это потому, что именно это был вынужден сказать специалист MS (реальная цитата):«ну, просто продолжайте копировать — в конце концов данные сольются».

Другие советы

Проверьте Сценарии сотрудничества (одноранговая сеть) в Microsoft Framework 2.0.Включенные туда поставщики позволяют напрямую синхронизировать две базы данных SQL Server Compact.Они также могут напрямую синхронизироваться с другими провайдерами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top