Архитектура и классы для синхронизации базы данных

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

На следующем рисунке показана двухуровневая архитектура: все компоненты для сеанса синхронизации находятся на локальном компьютере, который обладает прямым соединением с базой данных на удаленном компьютере. В сеансе синхронизации локальным называется компьютер, с которого запущена синхронизация. Если необходимо запустить синхронизацию с нескольких компьютеров, то каждый компьютер должен содержать все показанные на рисунке компоненты. Эти компоненты подробно описаны после рисунка.

Двухуровневая смешанная топология синхронизации

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

Многоуровневая смешанная топология синхронизации

Базы данных

База данных может относиться к выпуску SQL Server 2005 с пакетом обновления 2 (SP2) или более поздней версии, в том числе SQL Server Compact с пакетом обновления 2 (SP2) или более поздней версии (32-разрядная или 64-разрядная версия) и SQL Azure. Кроме того, поддерживаются другие базы данных, для которых доступен поставщик ADO.NET. Платформа Sync Framework автоматически настраивает отслеживание изменений и хранилище метаданных для баз данных SQL Server и SQL Server Compact. Дополнительные сведения см. в разделе Как настроить и выполнить синхронизацию базы данных (SQL Server). Для баз данных, не являющихся базами данных SQL Server, необходимо выполнить подготовку. Дополнительные сведения см. в разделе Как подготовить серверную базу данных для синхронизации совместной работы (не SQL Server).

SyncOrchestrator

Модуль взаимодействия синхронизации управляет синхронизацией следующим образом.

  • Определяет порядок и направление применения изменений в зависимости от значения свойства Direction.

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

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

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

SyncProvider (SqlSyncProvider, SqlCeSyncProvider и DbSyncProvider)

Служба синхронизации взаимодействует с каждой базой данных и позволяет модулю взаимодействия синхронизации работать независимо от реализации базы данных. Для баз данных SQL Server Compact используйте SqlCeSyncProvider, а для других выпусков SQL Server, включая SQL Azure, — SqlSyncProvider. Для прочих баз данных используйте DbSyncProvider. Все три службы наследуют класс RelationalSyncProvider. Служба синхронизации выполняет следующие основные функции.

  • Получает изменения, которые произошли в базе данных со времени последнего сеанса синхронизации.

  • Применяет добавочные изменения в базе данных.

  • Выявляет конфликтующие изменения.

Примечание

Если две базы данных SQL Server Compact синхронизируются с помощью двух экземпляров SqlCeSyncProvider, необходимо использовать многоуровневую архитектуру. Двухуровневые архитектуры в таком сценарии не поддерживаются.

SyncAdapter (DbSyncAdapter и SqlCeSyncAdapter)

Адаптер синхронизации, который является аналогом адаптера обработки данных в ADO.NET, определяется для каждой синхронизируемой таблицы. Адаптер синхронизации предоставляет службе синхронизации определенные команды SQL, необходимые для взаимодействия с базой данных.

Для адаптеров синхронизации, используемых объектами SqlSyncProvider и SqlCeSyncProvider, Sync Framework создает команды автоматически (класс SqlCeSyncAdapter закрыт, чтобы снизить сложности синхронизации с этим хранилищем). Для DbSyncAdapter пользователь создает адаптер и задает команды, например InsertCommand, которая применяет операции вставки в базу данных сервера из другой клиентской базы данных или базы данных сервера. Поскольку адаптеры синхронизации используют объект ADO.NETDbCommand, может быть использована любая структура команд, совместимая с ADO.NET. Сюда входят встроенный код SQL, хранимые процедуры, представления, построенные на одной таблице, функции и другие объекты. Командам требуется только один результат, определяющий структуру и данные, которые должны быть переданы и применены. Дополнительные сведения см. в разделе DbSyncAdapter. Дополнительные сведения о командах см. в подразделе «Адаптер синхронизации» раздела Как настроить и выполнить синхронизацию совместной работы (не SQL Server).

Дополнительные классы в API-интерфейсе

На иллюстрациях в этом разделе показаны основные классы API-интерфейса. Помимо этого существует множество классов, которые здесь не показаны. Сведения обо всех доступных классах см. в разделах Microsoft.Synchronization, Microsoft.Synchronization.Data, Microsoft.Synchronization.Data.SqlServer и Microsoft.Synchronization.Data.SqlServerCe. В следующих разделах даны общие сведения о других важных классах, с которыми необходимо ознакомиться.

DbSyncScope

Область синхронизации — это логическое группирование объектов, которые должны синхронизироваться как единое целое. В случае синхронизации баз данных область обычно представляет собой набор таблиц, причем таблицы можно фильтровать. Таблицы могут входить в одну или несколько областей. Дополнительные сведения см. в подразделе «Определение областей для синхронизации» раздела Как подготовить серверную базу данных для синхронизации совместной работы (не SQL Server).

Объекты провизионирования базы данных

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

SQL Server и SQL Azure

SQL Server Compact

Описание

DbSyncScopeDescription

DbSyncScopeDescription

Представляет область синхронизации, которая является логическим группированием таблиц (с возможной фильтрацией), которые синхронизируются как единое целое.

SqlSyncScopeProvisioning

SqlCeSyncScopeProvisioning

Представляет провизионирование базы данных SQL Server, SQL Azure и SQL Server Compact для определенной области, представленной объектом DbSyncScopeDescription.

SqlSyncProviderScopeConfiguration

SqlCeSyncProviderScopeConfiguration

Представляет сведения о настройке, которые используются SqlSyncProvider или SqlCeSyncProvider для определенной области.

DbSyncTableDescription

DbSyncTableDescription

Представляет схему таблицы, включенной в область синхронизации.

DbSyncColumnDescription

DbSyncColumnDescription

Представляет схему столбца, который входит в таблицу, включенную в область синхронизации.

SqlSyncDescriptionBuilder

SqlCeSyncDescriptionBuilder

Представляет сведения об области и таблице для баз данных SQL Server, SQL Azure и SQL Server Compact, участвующих в синхронизации.

SqlSyncTableProvisioning

SqlSyncTableProvisioning

Представляет провизионирование баз данных SQL Server, SQL Azure и SQL Server Compact, представленных объектом DbSyncTableDescription.

SqlSyncProviderAdapterConfiguration

SqlSyncProviderAdapterConfiguration

Представляет данные конфигурации адаптера синхронизации для таблицы в базах данных SQL Server, SQL Azure и SQL Server Compact.

SyncOperationStatistics

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

DbSyncSession

Объект DbSyncSession предоставляет доступ к переменным сеанса синхронизации. Переменные сеанса предоставляются разработчику для использования в качестве параметров для команд выбора, вставки, обновления и удаления, выполняемых на серверах, использующих DbSyncProvider и DbSyncAdapter. Дополнительные сведения см. в разделе Как использовать переменные сеанса для синхронизации совместной работы (не SQL Server).

Библиотеки Sync Framework

Классы синхронизации баз данных Sync Framework содержатся в следующих библиотеках.

Библиотеки зависят от System.dll и System.Data.dll платформы .NET Framework 2.0 и более поздних версий.

См. также

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

Сценарии синхронизации баз данных

Как настроить и выполнить синхронизацию базы данных (SQL Server)

Синхронизация других баз данных, совместимых с ADO.NET