Новые возможности Sync Framework 2.0

Платформа Sync Framework 2.0 включает новые и улучшенные возможности в следующих областях:

  • Поставщики базы данных

    • Новые поставщики для SQL Server и SQL Server Compact

    • Надежное пакетирование в памяти

    • API-интерфейсы провизионирования и управления

    • Инициализация с помощью моментального снимка

    • Гибкость применительно к форме топологии

    • Возможности повышения производительности

  • Служба синхронизации файлов

    • Преобразование данных
  • Пользовательские поставщики

    • Простые поставщики

    • Преобразование данных между поставщиками

    • Фильтрация

    • Обработка конфликтов

    • Трассировка

    • Служба применения изменений

    • Сериализатор службы хранилища метаданных

    • Преобразователи поставщиков

    • Улучшения набора знаний

    • Уровни совместимости

    • Устаревшие интерфейсы

Поставщики базы данных

Платформа Sync Framework 2.0 представляет два новых поставщика баз данных, ряд важных функций синхронизации и управления, а также значительные возможности повышения производительности.

Новые поставщики для SQL Server и SQL Server Compact

Платформа Sync Framework 2.0 включает два новых поставщика баз данных.

  • Поставщик SqlCeSyncProvider предназначен для синхронизации баз данных SQL Server Compact.

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

  • Поставщик SqlSyncProvider предназначен для синхронизации с любым другим выпуском SQL Server, включая SQL Server Express.

    Этот поставщик, который может быть использован и в качестве сервера, и в качестве клиента, в значительной степени снижает порог вхождения для синхронизации с базами данных SQL Server. Поставщик SqlSyncProvider обладает теми же возможностями, что и DbSyncProvider, но требует написания значительно меньшего объема кода и понимания запросов, которые Sync Framework использует для синхронизации данных. Поставщик DbSyncProvider по-прежнему подходит для баз данных, отличных от SQL Server.

Как и остальные поставщики платформы Sync Framework, два новых поставщика могут быть использованы в любой форме топологии: клиент-сервер, одноранговых и т. д. Дополнительные сведения об этих поставщиках см. в разделе Как настроить и выполнить синхронизацию совместной работы (SQL Server).

Надежное пакетирование в памяти

Предыдущие версии платформы Sync Framework и служб Sync Services for ADO.NET предлагали разработчику определить собственную логику пакетирования, которая затем вызывалась из среды выполнения Sync Framework. К недостаткам такого подхода относились: неизбежные сложности, связанные с делением изменений на пакеты; издержки сетевого обмена между клиентом и сервером; невозможность решения конфликтов с ресурсами, поскольку размер пакета определялся по числу синхронизируемых строк, а не по занимаемому им объему памяти.

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

API-интерфейсы провизионирования и управления

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

Типичные задачи, такие как резервное копирование и восстановление базы данных и очистка метаданных, теперь можно выполнить непосредственно через API-интерфейс, что устраняет необходимость в самостоятельной реализации этой логики силами разработчиков. Дополнительные сведения см. в разделах Как выполнить резервное копирование и восстановление базы данных (SQL Server) и Как очищать метаданные для синхронизации совместной работы (SQL Server).

Инициализация с помощью моментального снимка

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

  • Полная инициализация клиентской базы данных

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

  • Инициализация моментального снимка клиентской базы данных с использованием существующей клиентской базы данных

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

Гибкость применительно к форме топологии

Предыдущие версии служб Sync Services for ADO.NET были привязаны к конкретной форме топологии, в которой множество клиентов синхронизируют изменения через центральный сервер.

Поскольку новая версия служб Sync Services for ADO.NET построена на основе платформы Sync Framework, выбор сценариев для разработчика значительно расширился. Например, теперь разработчику доступны сценарии совместной работы, для которых необходима синхронизация изменений между клиентами. Кроме этого, стал доступным сценарий с филиалами, когда ряд POS-терминалов синхронизируется с сервером филиала, а тот, в свою очередь, синхронизируется с центральным сервером компании.

Поскольку новые поставщики баз данных построены на основе платформы Sync Framework, открывается возможность поддержки синхронизации изменений с новыми типами хранилищ, таких как Azure SQL Data Services.

Возможности повышения производительности

Новые поставщики баз данных, представленные в этой версии, были тщательно протестированы в масштабных конфигурациях, где одиночный сервер обслуживает тысячи клиентов, выполняя тысячи параллельных операций синхронизации. Такое тестирование имело результатом огромное число внутренних улучшений в области повышения производительности, которые наделили поставщики баз данных Sync Framework тем же уровнем производительности, что и другие технологии Майкрософт, такие как удаленный доступ к данным (RDA), обеспечив при этом широкий выбор возможностей, способных конкурировать с комплексными решениями репликации слиянием.

Служба синхронизации файлов

Помимо API-интерфейсов преобразования данных, которые можно использовать для пользовательских поставщиков любого типа, платформа Sync Framework 2.0 также включает API-интерфейсы преобразования специально для службы синхронизации файлов. Дополнительные сведения см. в разделе Синхронизация поставщика синхронизации файлов с другими поставщиками, IFileDataRetriever (управляемый код) или IFileDataRetriever (неуправляемый код).

Пользовательские поставщики

Платформа Sync Framework 2.0 значительно расширяет возможности стандартных пользовательских поставщиков и вводит новый тип пользовательского поставщика — простой поставщик.

Простые поставщики

API-интерфейс простых поставщиков сокращает объем работы, необходимой для разработки поставщиков. Это особенно верно, когда источник данных имеет очень мало возможностей, связанных с синхронизацией, таких как отслеживание изменений. Этот API-интерфейс позволяет разработчику создавать поставщики, не изучая досконально механизм синхронизации. Большая часть кода для простого поставщика представляет собой код для взаимодействия с источником данных. Дополнительные сведения см. в разделах Реализация простого пользовательского поставщика и Основные принципы построения пользовательских поставщиков.

Важные новые типы в управляемом коде

Полный список типов см. в разделе Microsoft.Synchronization.SimpleProviders.

Важные новые интерфейсы в неуправляемом коде

Полный список типов см. в разделе Простой поставщик Sync Framework.

Преобразование данных между поставщиками

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

Новые типы и свойства в управляемом коде

Новые интерфейсы в неуправляемом коде

Фильтрация

Фильтры используются для управления синхронизируемыми данными. В Sync Framework 2.0 добавлена поддержка фильтров, отбирающих базовые единицы для синхронизации, и пользовательских фильтров, создаваемых разработчиком. В Sync Framework 2.0 также добавлена возможность для поставщиков согласовывать наборы фильтров, которые будут использоваться во время синхронизации.

Дополнительные сведения см. в разделе Фильтрация данных синхронизации.

Фильтрация базовых единиц

Базовая единица является частью такого синхронизируемого элемента, как, например, телефонный номер в элементе контакта. В разных репликах может иметься разное представление одного элемента, в одних репликах такое представление может быть разнообразнее и подробнее, чем в других. Например, сообщество синхронизации обменивается контактной информацией и определяет базовые единицы для параметров name, phone number и address. Одна реплика в среде является мобильным устройством, на котором можно хранить только name и phone number. Sync Framework поддерживает такие сценарии, позволяя поставщику задавать фильтр базовых единиц, который указывает, что в реплике можно хранить только подмножество данных. Метаданные синхронизации и процесс синхронизации были улучшены для эффективной обработки такой фильтрации.

Новые типы в управляемом коде

Новые интерфейсы и методы в неуправляемом коде

Пользовательские фильтры

Пользовательские фильтры создаются разработчиком и могут иметь любой вид. Фильтруемая реплика хранит данные только для элементов, соответствующих таким критериям фильтра, как, например, реплика мультимедийных данных, которая хранит только музыкальные композиции с рейтингом в три звезды и выше. При изменении рейтинга композиции элемент может попасть под действие фильтра или выйти из него. Разработчик может определить пользовательский фильтр, который используется для управления данными элемента, который хранится в фильтруемой реплике. Фильтруемая реплика с отслеживанием — это другая реплика в среде, которая позволяет определить, какие элементы соответствуют критериям фильтра, а какие недавно попали под действие фильтра или вышли из него. Фильтруемая реплика с отслеживанием позволяет хранить данные элементов, не соответствующих критериям фильтра. Sync Framework поддерживает эффективную синхронизацию между фильтруемой репликой с отслеживанием и фильтруемой репликой, отправляя только элементы, соответствующие критериям фильтра, вместе со сведениями о фильтре. Sync Framework также правильно вычисляет наборы знаний и другие метаданные для фильтруемой реплики с отслеживанием, когда изменения отправляются с фильтруемой реплики к фильтруемой реплики с отслеживанием.

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

Важные новые типы в управляемом коде

Поставщик реализует следующие типы:

Sync Framework реализует следующие типы:

Полный список типов см. в разделе Microsoft.Synchronization.

Важные новые интерфейсы в неуправляемом коде

Поставщик реализует следующие интерфейсы:

Sync Framework реализует следующие интерфейсы:

Полный список интерфейсов см. в разделе Базовые компоненты Sync Framework.

Фильтры, согласуемые поставщиком

Когда источник данных назначения хранит только подмножество доступных данных, гораздо эффективнее, если поставщик источника использует фильтр для перечисления только тех данных, которые могут храниться в назначении. Согласование фильтров позволяет поставщику назначения указать, что поставщик источника должен использовать в процессе перечисления изменений один или несколько фильтров. Исходный поставщик может принять или отклонить этот фильтр. Если поставщик источника не поддерживает ни один из запрошенных фильтров, поставщик назначения может принять все данные и произвести фильтрацию самостоятельно. Sync Framework вызывает поставщиков соответственно для согласования использования фильтра.

Новые типы в управляемом коде

Новые интерфейсы в неуправляемом коде

Обработка конфликтов

В Sync Framework 2.0 добавлена поддержка конфликтов ограничений, зарегистрированных конфликтов и реализации устранения конфликтов по принципу «приоритет получает последняя операция записи».

Конфликты ограничений

В Sync Framework 2.0 расширена поддержка конфликтов ограничений, которые представляют собой конфликты, нарушающие ограничения, наложенные на элементы или базовые единицы, такие как связь папок или расположение данных с идентичными именами в пределах файловой системы. Поставщик назначения может сообщать о конфликте ограничения Sync Framework и использовать компоненты Sync Framework для разрешения конфликта и определения способа применения такого разрешения к конечной реплике.

Учтите, что такие конфликты ограничений не могут обрабатываться поставщиками, использующими пользовательские фильтры или службу применения изменений. Это может привести к непредвиденным результатам.

Дополнительные сведения см. в разделе Обнаружение и разрешение конфликтов ограничений.

Важные новые и обновленные типы в управляемом коде

Поставщики назначения реализуют следующий новый класс.

Приложения синхронизации реализуют новые методы в следующем классе.

Sync Framework реализует новые члены в следующих классах.

Полный список типов см. в разделе Microsoft.Synchronization.

Важные новые интерфейсы в неуправляемом коде

Поставщики назначения реализуют следующие новые интерфейсы.

Приложения синхронизации реализуют следующие новые интерфейсы.

Sync Framework реализует следующие новые интерфейсы.

Полный список интерфейсов см. в разделе Базовые компоненты Sync Framework.

Ведение журнала конфликтов

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

Новые типы в управляемом коде

Поставщики реализуют следующие новые классы.

Платформа Sync Frameworkреализует следующие новые классы.

Новые интерфейсы в неуправляемом коде

Поставщики реализуют следующие новые классы.

Платформа Sync Frameworkреализует следующие новые классы.

Устранение конфликтов по принципу «побеждает последняя операция записи»

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

Дополнительные сведения см. в разделе Обнаружение и разрешение конфликтов параллелизма.

Новые типы в управляемом коде

Поставщики реализуют следующие новые интерфейсы.

Новые интерфейсы в неуправляемом коде

Поставщики реализуют следующие новые интерфейсы.

Трассировка

Платформа Sync Framework позволяет отслеживать выполнение нескольких компонентов, что полезно при отладке приложений. Для большинства компонентов платформы Sync Framework трассировка ведется на уровне машинного кода с помощью инфраструктуры средства отслеживания событий для Windows (ETW). Средство трассировки событий Windows применяется даже в том случае, если при разработке используется управляемая версия API, так как управляемая версия API является оболочкой собственного интерфейса API. Дополнительные сведения см. в разделе Компоненты трассировки платформы Sync Framework.

Поставщики баз данных платформы Sync Framework поддерживают управляемую трассировку на основе реализации .NET Framework. Дополнительные сведения см. в разделе Как трассировать процесс синхронизации.

Служба применения изменений

Sync Framework включает реализацию объекта применения изменений, которая используется большинством приложений для применения изменений в реплике. В версии 2.0 Sync Framework представлена служба применения изменений, которая выполняет те же действия, что и объект применения изменений, но на более гранулярном уровне. Поставщик назначения, которому требуется большая гибкость, чем стандартному объекту применения изменений, может использовать службу применения изменений для выполнения только необходимого набора действий.

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

Дополнительные сведения см. в разделе Применение изменений с помощью службы применения изменений.

Новые типы в управляемом коде

Новые интерфейсы и перечисления в неуправляемом коде

Сериализатор службы хранилища метаданных

Службы хранилища метаданных сохраняют метаданные реплик и элементов в упрощенной базе данных. Метаданные сохраняются в конкретной схеме таблицы и в двоичном формате, которые могут измениться в следующих выпусках платформы Sync Framework. Кроме того, поля пользовательского поставщика в базе данных могут меняться при выпуске разработчиком новых версий конкретного поставщика. Для обеспечения большей совместимости между разными версиями Sync Framework предоставляет канонический формат файла и набор интерфейсов сериализации, которые обладают прямой и обратной совместимостью для достаточно большого числа изменений версий метаданных. Дополнительные сведения см. в разделах Доступ к метаданным из компонентов с различными версиями и Обновление версии хранилища метаданных.

Новые типы в управляемом коде

Новые интерфейсы в неуправляемом коде

Преобразователи поставщиков

Пользовательские поставщики обычно наследуются от интерфейса IKnowledgeSyncProvider, но они также могут наследоваться напрямую от интерфейса ISyncProvider. Однако когда для управления синхронизацией используется объект ISyncSession (обычная ситуация), поставщик должен наследоваться от IKnowledgeSyncProvider. Чтобы поставщик, наследованный от ISyncProvider, мог участвовать в сеансе синхронизации, Sync Framework позволяет преобразовать поставщик в IKnowledgeSyncProvider во время выполнения.

Новые интерфейсы и методы в неуправляемом коде

Улучшения набора знаний

В Sync Framework 2.0 улучшен объект набора знаний, который стал более гибким и эффективным.

Структура набора знаний

В Sync Framework 2.0 базовая структура объекта набора знаний изменена на более гибкий и эффективный формат, также определены новые интерфейсы для доступа к новым элементам набора знаний. Для обратной совместимости новый объект набора знаний также эмулирует вывод методов наборов знаний Sync Framework 1.0.

Новые и обновленные типы в управляемом коде

Новые интерфейсы и перечисления в неуправляемом коде

В Sync Framework 2.0 добавлены файлы cookie набора знаний, представляющие собой упрощенное представление набора знаний, предназначенное только для чтения, которое может использоваться для быстрого сравнения, когда производительность особенно важна.

Новые типы и члены в управляемом коде

Новое перечисление и методы в неуправляемом коде

Уровни совместимости

Платформа Sync Framework включает уровни совместимости для метаданных, обеспечивая возможность продолжения взаимодействия различных версий без ошибок. Дополнительные сведения см. в разделе Обратная совместимость и взаимодействие платформы Sync Framework.

Новые типы и члены в управляемом коде

Новое перечисление и методы в неуправляемом коде

Устаревшие интерфейсы

Следующие интерфейсы являются устаревшими и не должны использоваться в новых разработках. Они продолжат работать на платформе Sync Framework 2.0, но в следующей версии могут быть удалены.

Устаревшие интерфейсы в неуправляемом коде

См. также

Основные положения

Платформа Microsoft Sync Framework
Преимущества использования Sync Framework
Выбор соответствующих компонентов Sync Framework