Общие сведения и сценарии
Платформы Sync Framework обеспечивают синхронизацию между базами данных. Предоставляется гибкий и интуитивно понятный API-интерфейс, который позволяет создавать приложения для работы вне сети и различных вариантов совместной работы. Этот API-интерфейс позволяет использовать все или некоторые из предоставляемых компонентов в зависимости от архитектуры и требований приложения. Платформа Sync Framework поддерживает клиент-серверную, одноранговую и смешанную топологии. В клиент-серверных топологиях все клиенты синхронизируются с центральным сервером. В одноранговой топологии каждый клиент может синхронизироваться с другим узлом без передачи изменений через центральный сервер. Смешанные топологии включают сочетание топологий «клиент-клиент» и «клиент-сервер».
Сравнение платформы Sync Framework с другими технологиями
Корпорация Майкрософт предлагает ряд технологий для приложений синхронизации. Наиболее важная технология для сравнения в области одноранговой синхронизации — одноранговая репликация транзакций. Она используется для синхронизации как минимум двух баз данных выпуска SQL Server Enterprise. Хотя эти две технологии имеет смысл сравнить, имейте в виду, что одноранговая репликация транзакций разработана для синхронизации между серверами, обеспечивающей масштабируемость и высокий уровень доступности. Службы Sync Framework предназначены для синхронизации между клиентами и клиентом и сервером, которая поддерживает совместную работу.
Следующая таблица поможет выбрать подходящую технологию для проектируемого приложения.
Основная функция |
Одноранговая репликация транзакций |
Sync Framework |
---|---|---|
Синхронизация с использованием служб |
Нет |
Да |
Синхронизация с другими типами хранилищ данных 1 |
Нет |
Да |
Отслеживание добавочных изменений 2 |
Да |
Да |
Обнаружение и разрешение конфликтов3 |
Да |
Да |
Автоматическая инициализация схемы и данных |
Да |
Нет |
Поддержка больших наборов данных |
Да |
Да |
Автоматическое распространение изменений схемы |
Да |
Нет |
1 Базы данных могут обмениваться информацией с другими источниками данных, поддерживаемыми Sync Framework, такими как веб-службы, файловые системы и пользовательские хранилища данных.
2Sync Framework используют отслеживание суммарных изменений, в которых синхронизируется последняя версия строки. При одноранговой репликации транзакций все изменения в строке применяются по порядку на каждом узле.
3 Репликация обеспечивает встроенное разрешение конфликтов, а платформы Sync Framework обеспечивают инфраструктуру для построения схемы устранения конфликтов.
Службы Sync Framework предоставляют гибкую модель программирования с поддержкой автономных наборов данных и богатый набор возможностей синхронизации, аналогичный возможностям репликации. Репликация ориентирована на администраторов баз данных и предназначена для синхронизации баз данных SQL Server. Репликация объединяет в себе широкий набор функций с настройкой конфигурации с помощью мастеров, хранимых процедур и собственного API-интерфейса. Службы Sync Framework предназначены для разработчиков и поддерживают синхронизацию с другими типами хранилища данных, а также синхронизацию через службы, в частности Windows Communication Foundation (WCF).
Для некоторых приложений выбор технологии оказывается весьма простым. Если необходимы отдельные компоненты для синхронизации через различные транспорты или службы либо требуется синхронизация с источником данных, отличным от базы данных, лучшим решением будут платформами Sync Framework. Если вы администратор базы данных, разрабатывающий масштабируемую систему с высоким уровнем доступности, или хотите настроить синхронизацию, не внося больших изменений в код приложения, смело выбирайте репликацию. В конечном счете необходимо тщательно оценить требования приложения и, исходя из этого, решить, будет ли API-интерфейс платформ Sync Framework подходящей технологией. Если нужно нечто большее, чем просто репликация схемы и данных из одной базы данных в другую, то рекомендуется использовать платформу Sync Framework.
Сценарии синхронизации
Поддержка мобильной и удаленной работы с каждым днем становится все более важной для организаций. Им необходимо обеспечить таким работникам доступ к тем же данным, которыми они располагают в офисе. В большинстве случаев эти пользователи имеют переносной компьютер, офисный настольный ПК, смартфон или карманный компьютер (PDA). Эти устройства позволяют пользователям время от времени работать с данными через VPN или другое прямое соединение с корпоративной сетью. Для наиболее удаленных пользователей это решение не подходит из-за следующих значительных недостатков.
Требования к сети
Чтобы пользователи могли производить доступ к данным, удаленное устройство должно иметь постоянное соединение с корпоративной сетью. Для некоторых работников, например для тех, кто работает дома, это не представляет проблемы. Для других пользователей, таких как агенты по продажам, которым приходится постоянно переезжать с места на место, это может оказаться труднее. Например, если менеджер по продажам находится у клиента и не может получить доступ к данным о наличии продукции на складе из-за отсутствия подключения к сети, то ему будет очень трудно эффективно выполнить свою работу.
Скорость доступа к данным
В обычной корпоративной среде «клиент-сервер» пользователям доступны скоростные сети, которые обеспечивают быстрый доступ к данным. Однако удаленные работники часто подключаются через медленные, ненадежные сети. При использовании обычного решения приходится отдельно загружать каждый фрагмент данных, необходимый пользователю, поскольку не существует способа сохранения данных на устройстве. Например, если менеджер по продажам вынужден будет загружать список продукции при каждом открытии своего приложения, то такие затраты времени скоро вызовут у него разочарование.
Единственная точка сбоя
При использовании подобного решения работа пользователей часто зависит от одной базы данных сервера. Если база данных оказалась недоступной из-за планового отключения или отказа сервера, то все удаленные работники не смогут получить доступ к своим данным.
Масштабируемость сервера
Увеличение числа удаленных работников отражается на производительности серверов организации, что приводит к необходимости добавления оборудования.
Приложения без постоянного соединения
Альтернативой для описанного в предыдущем разделе решения является приложение без постоянного соединения. Приложение без постоянного соединения по-прежнему предоставляет удаленному работнику доступ к данным, однако нужные данные сохраняются локально. Для заполнения локальной базы данных приложение без постоянного соединения обычно пользуется синхронизацией.
Синхронизация данных предполагает возможность периодического доступа к данным, хранящимся в одной базе данных (например, клиентской), и синхронизации изменений с другой базой данных (например, серверной). Решение на основе синхронизации имеет то преимущество, что для доступа к данным пользователю больше не нужно иметь постоянное сетевое подключение. Поскольку данные хранятся локально, пользователь имеет к ним постоянный доступ и одновременно с этим снижаются требования к обработке в центральной базе данных. Кроме того, так как скорость сети не является сдерживающим фактором, пользователь может обращаться к данным со скоростью локального компьютера.
Синхронизация клиента с клиентом позволяет избежать сбоя в одной точке, поскольку не полагается на все изменения, проходящие через сервер. Возможность перевести часть процессов приложений на каждого клиента также позволяет решить вопрос масштабируемости сервера.
Платформа Sync Framework использует службы синхронизации для связи с каждой синхронизируемой базой данных. Поставщики базы данных Sync Framework, аналогичные поставщикам данных ADO.NET, позволяют другим компонентам Sync Framework работать независимо от реализации каждой базы данных. Sync Framework включает пять поставщиков баз данных, каждый из которых поддерживает два типа сценариев: работа вне сети и совместная работа. На следующем рисунке показан сценарий работы вне сети: в клиент-серверной топологии клиент подключается к центральному серверу для синхронизации данных, когда доступно соединение.
Обычным дополнением к такого рода приложениям без постоянного соединения является возможность поддержки совместной работы. В таком случае две базы данных могут выполнять одноранговую синхронизацию без необходимости обращения к центральному узлу. На следующем рисунке показана смешанная топология, в которой центральный сервер синхронизируется с клиентами и клиенты могут синхронизироваться друг с другом. Подобная топология может поддерживать работу приложения, которое позволяет пользователям совместно использовать заметки к проекту. Членам группы проекта часто необходима локальная копия данных для работы. Внесенные изменения можно синхронизировать с сервером, куда передаются изменения, или с другим членом группы, обмениваясь изменениями.
Службы синхронизации баз данных
Далее перечислены три основные службы синхронизации баз данных-источника Sync Framework, включающие:
Поставщик SqlSyncProvider предназначен для синхронизации баз данных SQL Server.
Поставщик SqlCeSyncProvider предназначен для синхронизации баз данных SQL Server Compact.
DbSyncProvider обычно используется для синхронизации баз данных, отличных от баз данных SQL Server
Данные поставщики имеют следующие характеристики.
Могут использоваться для клиент-серверных, одноранговых и смешанных топологий.
Могут использоваться более гибким образом. Например, можно синхронизировать два экземпляра DbSyncProvider либо один экземпляр SqlSyncProvider и один экземпляр SqlCeSyncProvider и т. д.
Используют метаданные Sync Framework и могут служить участниками в топологиях совместно с другими поставщиками Sync Framework.
Дополнительные сведения о синхронизации данных см. в разделе Сценарии синхронизации баз данных.
Также включены две дополнительные базы данных синхронизации, которые поддерживают только сценарии работы вне сети. Эти службы были заменены службами, описанными выше, которые поддерживают как сценарии работы вне сети, так и сценарии совместной работы. Они упоминаются в настоящей документации только в связи с существующими приложениями, которые их используют. При разработке новых приложений следует использовать службы, описанные выше.
Далее перечислены службы, поддерживающие только сценарии работы вне сети.
Данные поставщики имеют следующие характеристики.
Подходят для топологий «клиент-сервер».
Всегда используются парами. Например, две базы данных сервера нельзя синхронизировать с помощью двух экземпляров ServerSyncProvider (вместо этого используйте SqlSyncProvider или DbSyncProvider).
Могут иметь сложность меньше, чем у поставщиков совместной работы, однако не могут участвовать в топологиях с другими поставщиками Sync Framework.
Дополнительные сведения о синхронизации вне сети см. в разделе Сценарии работы только вне сети.