Рекомендации Sync Framework для приложения Smart Client

Microsoft Sync Framework с SQL 2005? Является ли это возможным? Кажется, это намекает на то, что провайдеры OOTB используют функциональность SQL2008. Я ищу некоторые быстрые победы в отношении проекта синхронизации. Клиентское приложение будет отключено в течение нескольких дней. Будет центральный сервер, который ДОЛЖЕН быть SQL Server 2005. Я могу использовать .net 3.5.

По сути, клиентское приложение может отключиться на неделю. Когда он возвращается в сеть, ему необходимо синхронизировать свои данные. Но хорошо то, что данные нужно только отправить на сервер. Материал, который синхронизируется с клиентом, будет просто данными поиска, которые клиент никогда не изменяет. Так что это означает, что я не забочусь о коллизиях синхронизации.

Чтобы упростить вам сценарий, этот интеллектуальный клиент отключается, и пользователь просматривает данные о некоторых наблюдениях. Они вводят данные в систему. Когда ноутбук снова подключается к сети, он синхронизирует все эти данные с сервером. Другие клиенты тоже будут делать то же самое, но никто никогда не прикасается к данным друг друга. Затем на сервере есть несколько отчетов для просмотра данных, которые были отправлены на сервер. Это также необходимо использовать ClickOnce.

Меня больше всего беспокоит то, что существует промежуточный выпуск, когда клиент находится в автономном режиме. В этом выпуске может потребоваться новое поле в базе данных и новое поле для заполнения в опросе. Очевидно, что новое поле будет обнуляемым, потому что мы не можем обновить старые данные, и это можно установить в качестве предположения. Но когда клиент подключается и его локальная схема данных и схема сервера не совпадают, сможет ли структура синхронизации справиться с этим? После отправки данных на сервер они удаляются локально.

Надеюсь, моя проблема имеет смысл.


person DarkwingDuck    schedule 25.07.2009    source источник


Ответы (1)


Я использовал инфраструктуру Microsoft Sync для приложения, которое должно иметь дело с коллизиями, и это ужасно. Файл *.sdf заблокирован для определенных изменений схемы (например, удаление столбца и т. д.).

Ваш сценарий звучит так, как будто Sync Framwork будет работать для вас, из коробки... просто не применяйте ссылочную целостность, поскольку Sync Framework вызовет проблемы со вставкой в ​​​​этих экземплярах.

Что касается обновления схемы, если вы следите за форумами Sync Framework, вам будет предложено создать временную таблицу так, как она должна выглядеть в конце, скопировать данные, а затем удалить старую таблицу. Когда закончите, переименуйте новую таблицу в то, что должно быть, и повторно подключите материал в SQL Server CE, который позволит вам обрабатывать классы синхронизации.

ИМХО, я собираюсь работать над удалением функции синхронизации из своего приложения, потому что это больше мешает, чем помогает.

person Richard B    schedule 25.07.2009
comment
Спасибо, ценим обратную связь. Также я узнал, что ClickOnce будет автоматически обновлять вашу схему, независимо от структуры синхронизации или нет. В моем случае я добавляю только новые поля с нулевым значением на центральном сервере, так что это может работать для меня достаточно хорошо. - person DarkwingDuck; 28.07.2009
comment
Как ClickOnce автоматически обновляет базу данных? Я еще не видел этот сценарий, и я очень заинтригован. - person Richard B; 28.07.2009
comment
Итак, я обнаружил, что ClickOnce будет безопасно развертывать только НЕКОТОРЫЕ изменения в вашей компактной базе данных. Например, удаление столбца работало нормально. Однако добавление столбца фактически привело к уничтожению всех локальных данных. Вместо этого я сделал следующее: во время процесса «синхронизации» я позволил приложению опубликовать свои данные, а ЗАТЕМ вызвал класс System.Deployment.CurrentDeployment, который имеет статические методы для обновления вашего развертывания. Это сработало для меня. Но это может работать не так хорошо, если вы используете WCF в качестве прокси-сервера для своей базы данных (что является поддерживаемым сценарием инфраструктуры синхронизации), поскольку вам нужно управлять версиями своих контрактов. - person DarkwingDuck; 03.08.2009
comment
Хорошо.. вот почему я не мог понять, о чем вы говорили... Я использую исключительно WCF для синхронизации, потому что инструмент, над которым я работаю, предназначен для удаленных пользователей. Я не могу ожидать, что команда офисных работников сможет настроить репликацию сервера sql, поэтому лучшим вариантом было использовать службы синхронизации, а затем обрабатывать ее. С тех пор я узнал, что не верить часть времени в NIH — это плохо, и я собираюсь начать соглашаться с отношением к фоновым вещам (например, службам синхронизации) -> NIH = Not In House. - person Richard B; 03.08.2009
comment
Я надеюсь в конечном итоге использовать некоторые из новых гаджетов, которые поступают от Microsoft, чтобы иметь возможность иметь версию приложения Silverlight, а также более надежную профессиональную версию, которая представляет собой устанавливаемое приложение в WPF... но быть одним разработчиком , один шаг за раз на данный момент. - person Richard B; 03.08.2009