Microsoft Sync Framework
Microsoft Sync Framework представляет собой многофункциональную платформу синхронизации, которая обеспечивает совместный и автономный доступ для приложений, служб и устройств. Она содержит технологии и средства, позволяющие выполнять перемещение, общий доступ и получение данных в автономном режиме. При помощи Sync Framework разработчики могут создавать экосистемы синхронизации, которые позволяют интегрировать любое приложение с любыми данными из любого хранилища, использующего любой протокол в любой сети.
Платформа Sync Framework включает следующие решения, из которых первые три можно установить вместе с SQL Server 2008.
Службы Synchronization Services for ADO.NET можно использовать для автономной и общей синхронизации баз данных.
Базовые компоненты Sync Framework могут использоваться службами Synchronization Services for ADO.NET для синхронизации баз данных и создания поставщиков синхронизации для других типов хранилищ данных.
Службы Sync Services for FeedSync можно использовать для синхронизации RSS- и Atom-потоков в локальном хранилище.
Службы Sync Services for File Systems можно использовать для синхронизации файлов и папок в файловой системе.
Служба хранилища метаданных позволяет хранить метаданные синхронизации в SQL Server Compact 3.5.
Оставшаяся часть этого раздела содержит общие сведения о службах Synchronization Services for ADO.NET и сравнение с другими технологиями Майкрософт. Полную документацию по Synchronization Services for ADO.NET и Sync Framework см. в Центре разработки Microsoft Sync Framework.
Установка платформы Microsoft Sync Framework и служб Sync Services for ADO.NET
Установить платформу Sync Framework можно с помощью мастера установки SQL Server 2008 или с помощью параметров установки командной строки. Чтобы установить платформу Sync Framework с помощью мастера, на странице Выбор компонентов выберите Microsoft Sync Framework. Дополнительные сведения об установке SQL Server и связанных компонентов см. в разделе Общие сведения об установке SQL Server.
Общие сведения и сценарии синхронизации
Возможность поддержки мобильных и удаленных работников с каждым днем становится все более важной для организаций. Важно обеспечить таким работникам доступ к тем же данным, которыми они располагают в офисе. В большинстве случаев эти пользователи имеют переносной компьютер, офисный настольный ПК, смартфон или карманный компьютер (PDA). Эти устройства позволяют пользователям работать с данными непосредственно через VPN или другое прямое соединение с корпоративной сетью. Для наиболее удаленных пользователей это решение не подходит из-за следующих значительных недостатков.
Требования к сети
Чтобы пользователи могли получать доступ к данным, удаленное устройство должно иметь постоянное соединение с корпоративной сетью. Для некоторых работников, например работающих дома, это может не составлять проблемы. Для других, таких как агенты по продажам, которые постоянно передвигаются, это может оказаться труднее. Например, если менеджер по продажам находится у клиента и не может получить доступ к данным о наличии продукции на складе из-за отсутствия подключения к сети, то ему будет очень трудно эффективно выполнить свою работу.
Скорость доступа к данным
В обычной корпоративной среде «клиент-сервер» пользователи располагают скоростными сетями, которые обеспечивают быстрый доступ к данным. Однако удаленные работники обычно подключаются через медленные, ненадежные проводные и беспроводные сети. Как правило, каждый элемент данных, необходимых такому пользователю, приходится загружать по отдельному запросу, поскольку способа сохранить данные на устройстве не существует. Например, если менеджер по продажам вынужден будет загружать список продукции при каждом открытии своего приложения, то такие затраты времени скоро вызовут у него разочарование.
Единственная точка сбоя
В подобном решении все пользователи полагаются на одиночный сервер. Если база данных оказалась недоступной из-за планового отключения или отказа сервера, то все удаленные работники не смогут получить доступ к своим данным.
Масштабируемость сервера
Увеличение числа удаленных работников отражается на производительности серверов организации, что приводит к необходимости добавления оборудования.
Приложения с периодическим соединением
Альтернативой для описанного в предыдущем разделе решения является приложение с периодическим подключением. Такое приложение дает удаленному работнику постоянный доступ к данным. Однако в отличие от предыдущего случая, когда пользователь должен был непосредственно обращаться за нужными данными к корпоративной базе данных, нужные данные хранятся в устройстве. Чтобы заполнить локальную базу данных, приложение с периодическим подключением обычно использует синхронизацию.
Синхронизация данных предполагает возможность периодического доступа к данным, хранящимся в клиентской базе данных (например, SQL Server Compact 3.5), и синхронизации изменений с базой данных на сервере (например, SQL Server). Решение на основе синхронизации имеет то преимущество, что для доступа к данным пользователю больше не нужно иметь постоянное сетевое подключение. Поскольку данные хранятся локально, пользователь имеет к ним постоянный доступ, одновременно с этим снижаются требования к обработке в центральной базе данных. Кроме того, поскольку скорость обмена данными сдерживающим фактором больше не является, пользователь может обращаться к данным со скоростью устройства.
Службы Sync Services for ADO.NET
Службы Synchronization Services for ADO.NET обеспечивают синхронизацию между базами данных. Они обеспечивают интуитивно понятный и гибкий API, который позволяет создавать приложения для автономного применения и совместной работы. Службы Synchronization Services for ADO.NET обеспечивают синхронизацию между двумя одноранговыми узлами, например между базой данных SQL Server или клиентской базой данных SQL Server Compact 3.5 и любой серверной базой данных, для которой имеется поставщик ADO.NET. API позволяет использовать все или лишь некоторые из имеющихся компонентов в зависимости от архитектуры и требований приложения.
На следующих рисунках показаны примеры приложений с периодическим соединением, в которых данные (находящиеся в базе данных, нарисованной зеленым цветом) хранятся в устройстве удаленного работника. Первый пример — изолированная СУБД, в которой данные хранятся непосредственно в устройстве пользователя. Второй пример — удаленный офис, где данные хранятся в базе данных рабочей группы в этом офисе, чтобы к ним могли обращаться несколько локальных сотрудников.
Обычным расширением этого типа приложений с периодическим соединением является возможность поддержки совместной работы. В таком случае две базы данных могут выполнять одноранговую синхронизацию без необходимости обращаться к центральному узлу. Как показано ниже, удаленная база данных может обмениваться данными с любой другой базой данных. Решение этого типа полезно, когда удаленные сотрудники (например, работающие на месте финансовые аудиторы) работают группой на удаленном объекте. Такие работники должны часто обмениваться данными между собой. Но, так как у них нет соединения с центральной базой данных, обмен данными производится через одноранговую сеть.
Использование служб Sync Services for ADO.NET с SQL Server
Службы Synchronization Services for ADO.NET поддерживают базы данных следующим образом.
При автономной работе клиентской базой данных должна быть SQL Server Compact 3.5 версии 3.5 или выше. Серверная база данных может быть любой базой данных, для которой имеется поставщик ADO.NET.
Для совместной работы каждая из одноранговых баз данных должна использовать SQL Server 2000 с пакетом обновления 4 или выше.
SQL Server является базой данных уровня предприятия, которая предоставляет надежную основу для приложений, которым необходима синхронизация данных. SQL Server 2008 обеспечивает отслеживание изменений, одну из наиболее полезных функций для разработчиков систем синхронизации. Службы Synchronization Services for ADO.NET предоставляют API для синхронизации изменений, но в действительности они не отслеживают изменения на сервере или в одноранговой базе данных. (SQL Server Compact 3.5 не отслеживает изменения в клиентской базе данных.) Можно создать нестандартную систему отслеживания изменений, однако обычно это сопряжено со значительным усложнением среды и повышенными затратами ресурсов. Рекомендуется использовать отслеживание изменений SQL Server 2008, так как в этом случае обеспечиваются простота настройки и высокая производительность. Дополнительные сведения см. в разделе Отслеживание изменений данных.
Сравнение служб Sync Services for ADO.NET с другими технологиями
Корпорация Майкрософт предлагает ряд технологий для приложений, выполняющих синхронизацию. Поэтому полезно сравнить службы Synchronization Services for ADO.NET с другими технологиями для автономной и совместной работы.
Автономная синхронизация
Наиболее значимыми технологиями Microsoft для автономной синхронизации являются следующие.
Удаленный доступ к данным. Применяется для синхронизации баз данных SQL Server Compact 3.5 с базами данных других выпусков SQL Server. Дополнительные сведения см. в электронной документации по SQL Server Compact 3.5.
Репликация слиянием. Используется для синхронизации различных выпусков SQL Server, включая SQL Server Compact 3.5. Дополнительные сведения см. в разделах Обзор репликации слиянием и Выбор подходящего типа репликации.
Следующая таблица поможет выбрать подходящую технологию для проектируемого приложения.
Основная функция |
Удаленный доступ к данным |
Репликация слиянием |
Службы Sync Services |
---|---|---|---|
Синхронизация с помощью многоуровневой архитектуры или архитектуры на основе служб |
Нет |
Нет |
Да |
Поддержка разнородных баз данных |
Нет |
Нет |
Да |
Отслеживание добавочных изменений |
Нет1 |
Да |
Да |
Обнаружение и разрешение конфликтов |
Нет |
Да2 |
Да |
Простота создания представлений данных на стороне клиента |
Нет |
Нет |
Да |
Автоматическая инициализация схемы и данных |
Да |
Да |
Да |
Поддержка больших наборов данных |
Да |
Да |
Да |
Доступность обработчика запросов в локальном режиме |
Да |
Да |
Да |
Автоматическое распространение изменений схемы |
Нет |
Да |
Нет |
Автоматическое повторное секционирование данных |
Нет |
Да |
Нет |
Использование на устройствах |
Да |
Да |
Да |
1 Удаленный доступ к данным поддерживает передачу на сервер добавочных данных, но загрузка всегда представляет собой моментальный снимок, обновляющий данные на клиенте.
2 Репликация слиянием обеспечивает встроенное разрешение конфликтов, а службы Synchronization Services for ADO.NET обеспечивают инфраструктуру для построения схемы разрешения конфликтов.
Синхронизация совместной работы
Наиболее важная технология для сравнения в области одноранговой синхронизации совместной работы — одноранговая репликация транзакций, используемая для синхронизации нескольких баз данных выпуска SQL Server Enterprise. И службы Synchronization Services for ADO.NET, и репликация транзакций поддерживают одноранговую синхронизацию: репликация транзакций наилучшим образом подходит для обеспечения высокого уровня доступности и масштабирования операций чтения на нескольких серверах, в то время как службы Synchronization Services for ADO.NET больше подходят для приложений, в которых пользователи работают совместно с одними и теми же данными.
Следующая таблица поможет выбрать подходящую технологию для проектируемого приложения. Дополнительные сведения об одноранговой репликации транзакций см. в разделе Одноранговая репликация транзакций.
Основная функция |
Одноранговая репликация транзакций |
Службы Sync Services |
---|---|---|
Синхронизация с помощью многоуровневой архитектуры или архитектуры на основе служб |
Нет |
Да |
Поддержка разнородных баз данных |
Нет |
Да |
Отслеживание добавочных изменений 1 |
Да |
Да |
Обнаружение и разрешение конфликтов2 |
Да |
Да |
Автоматическая инициализация схемы и данных |
Да |
Да |
Поддержка больших наборов данных |
Да |
Да |
Доступность обработчика запросов в локальном режиме |
Да |
Да |
Автоматическое распространение изменений схемы |
Да |
Нет |
Использование на устройствах |
Нет |
Не в этой версии |
Использование с SQL Server Compact 3.5 |
Нет |
Не в этой версии |
1Synchronization Services for ADO.NET используют отслеживание суммарных изменений, в которых синхронизируется последняя версия строки. При одноранговой репликации транзакций все изменения в строке применяются по порядку на каждом узле.
2 Репликация обеспечивает встроенное разрешение конфликтов, а службы Synchronization Services for ADO.NET обеспечивают инфраструктуру для построения схемы разрешения конфликтов.
Выбор технологии
Службы Synchronization Services for ADO.NET обеспечивают гибкость модели программирования, аналогичную автономным наборам данных, и более широкий набор функций синхронизации, как и при репликации слиянием. Функциональность служб Synchronization Services for ADO.NET превосходит возможности удаленного доступа к данным. Репликация ориентирована на администраторов баз данных и предназначена для синхронизации баз данных SQL Server. Репликация предоставляет широкий набор функций с настройкой конфигурации с помощью мастера, хранимых процедур и собственного API. Службы Synchronization Services for ADO.NET предназначены для разработчиков и поддерживают разнородные базы данных и синхронизацию через службы, в частности Windows Communication Foundation (WCF). Если приложению необходима синхронизация с базами данных, отличными от SQL Server, или если оно должно иметь отдельные компоненты для синхронизации через различные транспорты и службы, лучше пользоваться службами Synchronization Services for ADO.NET.
Для некоторых приложений выбор технологии оказывается весьма простым. Если необходима синхронизация с источниками данных помимо баз данных SQL Server, то лучшим решением будут службы Synchronization Services for ADO.NET. Для администратора базы данных, который хотел бы настроить синхронизацию и обойтись при этом без программирования, лучшим выбором будет репликация. В конечном счете необходимо тщательно оценить требования приложения и исходя из этого решить, будет ли API служб Synchronization Services for ADO.NET подходящей технологией. Если необходимо нечто большее, чем просто репликация схемы и ее данных из одной базы данных в другую, то рекомендуется пользоваться службами Synchronization Services for ADO.NET.