Архитектура и классы синхронизации совместной работы
В сценариях работы вне сети и совместной работы Sync Framework можно использовать в двухуровневых и многоуровневых архитектурах. В архитектуре любого типа действия выполняются в рамках сеанса синхронизации: модуль взаимодействия синхронизации обменивается данными с двумя службами синхронизации для получения и применения изменений в каждой базе данных. Службы используют адаптер синхронизации для каждой таблицы, содержащий команды SQL, необходимые для этой таблицы. Некоторые службы синхронизации предоставляют доступ к адаптерам, что позволяет изменять такие команды. Другие службы создают адаптеры автоматически, чтобы снизить сложность операций по синхронизации определенного хранилища.
На следующем рисунке показана двухуровневая архитектура: все компоненты для сеанса синхронизации находятся на локальном компьютере, который обладает прямым соединением с базой данных на удаленном компьютере. В сеансе синхронизации локальным называется компьютер, с которого запущена синхронизация. Если необходимо запустить синхронизацию с нескольких компьютеров, то каждый компьютер должен содержать все показанные на рисунке компоненты. Эти компоненты подробно описаны после рисунка.
На следующем рисунке показана многоуровневая архитектура: требуются дополнительные компоненты, включая компоненты на удаленном компьютере, и теперь соединение с удаленной базой данных управляется прокси-сервером на локальном компьютере и службой на удаленном компьютере. Эти прокси-сервер и службы должны быть реализованы разработчиком приложения. Для снижения сложности этой задачи предоставляются образцы. Как и в случае с двухуровневой архитектурой, если необходимо запустить синхронизацию с нескольких компьютеров, то каждый компьютер должен содержать все компоненты.
Базы данных
База данных может принадлежать выпуску SQL Server 2005 с пакетом обновления 2 (SP2) и выше, включая SQL Server Compact 3.5 с пакетом обновления 1 (SP1) или более поздней версии (32-разрядная или 64-разрядная версия). Поддерживаются также другие базы данных, для которых доступен поставщик 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 — 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 Server Compact | Описание |
---|---|---|
DbSyncScopeDescription |
Представляет область синхронизации, которая является логическим группированием таблиц (с возможной фильтрацией), которые синхронизируются как единое целое. |
|
Представляет провизионирование базы данных SQL Server или SQL Server Compact для определенной области, представленной объектом DbSyncScopeDescription. |
||
Представляет сведения о настройке, которые используются SqlSyncProvider или SqlCeSyncProvider для определенной области. |
||
DbSyncTableDescription |
Представляет схему таблицы, включенной в область синхронизации. |
|
DbSyncColumnDescription |
Представляет схему столбца, который входит в таблицу, включенную в область синхронизации. |
|
Представляет сведения об области и таблице для базы данных SQL Server или SQL Server Compact, участвующих в синхронизации. |
||
SqlSyncTableProvisioning |
Представляет провизионирование базы данных SQL Server или SQL Server Compact, которая представляется объектом DbSyncTableDescription. |
|
SqlSyncProviderAdapterConfiguration |
Представляет конфигурацию адаптера синхронизации для таблицы в базе данных SQL Server или SQL Server Compact. |
SyncOperationStatistics
Статистика сеанса представляет собой набор статистических данных, которые предоставляются модулем взаимодействия синхронизации для каждого сеанса синхронизации. В нее входят данные о времени синхронизации, числе обработанных изменений и любых конфликтах и исключениях. Дополнительные сведения см. в разделе SyncOperationStatistics.
DbSyncSession
Объект DbSyncSession предоставляет доступ к переменным сеанса синхронизации. Переменные сеанса предоставляются разработчику для использования в качестве параметров для команд выбора, вставки, обновления и удаления, выполняемых на серверах, использующих DbSyncProvider и DbSyncAdapter. Дополнительные сведения см. в разделе Как использовать переменные сеанса для синхронизации совместной работы.
Библиотеки Sync Framework
Классы синхронизации баз данных Sync Framework содержатся в следующих библиотеках.
Microsoft.Synchronization.dll, в которую входит SyncOrchestrator.
Microsoft.Synchronization.SqlServer.dll, в которую входит SqlSyncProvider.
Microsoft.Synchronization.SqlServerCe.dll, в которую входит SqlCeSyncProvider.
Microsoft.Synchronization.Data.dll, в которую входят RelationalSyncProvider, DbSyncProvider и DbSyncAdapter.
Библиотеки зависят от System.dll и System.Data.dll платформы .NET Framework 2.0 и более поздних версий.
См. также
Основные положения
Сценарии совместной работы
Как настроить и выполнить синхронизацию совместной работы (SQL Server)
Синхронизация других баз данных, совместимых с ADO.NET