Программирование распространенных задач синхронизации клиента и сервера
В следующих подразделах этого раздела приведены дополнительные сведения, процедуры и полные примеры кода для распространенных задач синхронизации клиента и сервера, которые могут быть решены с помощью служб 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.
Запуск каждого приложения
Выполните сценарий Transact-SQL «Пользовательское отслеживание изменений для сценариев автономной работы» из раздела Инструкции по сценариям установки для поставщика базы данных. Этот сценарий создает базу данных, набор таблиц и триггеров, а также набор хранимых процедур. Для удаления и повторной вставки образца данных используйте хранимую процедуру
usp_InsertSampleData
.Скопируйте код класса
Utility
из раздела Инструкции по классу Utility для поставщика базы данных. Вставьте этот код в каждое из приложений, предназначенных для запуска, либо создайте на его основе DLL-библиотеку и ссылайтесь на нее из каждого приложения.Добавьте ссылки на следующие DLL-библиотеки.
Microsoft.Synchronization.dll
Microsoft.Synchronization.Data.dll
Microsoft.Synchronization.Data.Server.dll
Microsoft.Synchronization.Data.SqlServerCe.dll
System.Data.SqlServerCe.dll