Поделиться через


Программирование распространенных задач синхронизации клиента и сервера

Примечание

Следующие сведения включаются в качестве справки для существующих приложений, поддерживающих только сценарии работы вне сети. Дополнительные сведения о разработке новых приложений см. в разделе Архитектура и классы для синхронизации базы данных.

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

В этом разделе

Примеры приложений в разделах инструкций

Каждый раздел инструкций содержит как минимум одно приложение командной строки. Это приложение написано на языках C# и Visual Basic и демонстрирует конкретные функции API. Все приложения содержат код для выполнения синхронизации, смены клиента на сервер или наоборот и затем повторной синхронизации. Хотя было бы проще показать только примеры кода для определенной задачи или функции, а также легче понять, как работают службы Sync Framework, если увидеть отдельную функцию в достаточно полном контексте.

Каждое приложение содержит классы, относящиеся к описываемым функциям, а также следующие классы.

  • Program. Этот класс подготавливает синхронизацию и вызывает методы класса Utility. Класс Utility обрабатывает все функции, не относящиеся непосредственно к синхронизации, в частности сохраняет информацию о строке соединения и выполняет изменения в базе данных на сервере и клиенте.

  • SampleSyncAgent. Этот класс является производным от SyncAgent.

  • SampleServerSyncProvider. Этот класс является производным от DbServerSyncProvider. В тех примерах, где играют роль команды поставщика сервера, эти команды указаны вручную. В остальных случаях применяется класс SqlSyncAdapterBuilder, поскольку он требует меньше кода. Дополнительные сведения о командах поставщика сервера см. в разделе Как задать синхронизацию моментальными снимками, с загрузкой, с передачей и двунаправленную.

  • SampleClientSyncProvider. Этот класс является производным от SqlCeClientSyncProvider.

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

Код для всех приложений был протестирован на Visual Studio 2008 и SQL Server Compact с пакетом обновления 1 (SP1), SQL Server 2005 с пакетом обновления 2 (SP2) и SQL Server 2008.

Запуск каждого приложения

  1. Выполните сценарий Transact-SQL «Пользовательское отслеживание изменений для скриптов автономной работы» из раздела Инструкции по сценариям установки для поставщика базы данных. Этот скрипт создает базу данных, набор таблиц и триггеров, а также набор хранимых процедур. Для удаления и повторной вставки образца данных используйте хранимую процедуру usp_InsertSampleData.

  2. Скопируйте код класса Utility из раздела Инструкции по классу Utility для поставщика базы данных. Вставьте этот код в каждое из приложений, предназначенных для запуска, либо создайте на его основе DLL-библиотеку и ссылайтесь на нее из каждого приложения.

  3. Добавьте ссылки на следующие DLL-библиотеки.

    • Microsoft.Synchronization.dll

    • Microsoft.Synchronization.Data.dll

    • Microsoft.Synchronization.Data.Server.dll

    • Microsoft.Synchronization.Data.SqlServerCe.dll

    • System.Data.SqlServerCe.dll

См. также

Другие ресурсы

Сценарии работы только вне сети