Создание RSS- и Atom-каналов

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

Чтобы создать канал, приложение создает объект производителя канала и предоставляет следующие элементы:

  • службу синхронизации, которая представляет создаваемую реплику;

  • объекты преобразователей идентификаторов и элементов;

  • поток, содержащий пустой RSS-канал или Atom-канал.

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

Дополнительные сведения о реализации объектов преобразователя идентификаторов и элементов см. в разделе Преобразование идентификаторов и элементов для RSS- и Atom-каналов.

Дополнительные сведения о каналах FeedSync см. на веб-сайте FeedSync.

Создание канала с помощью управляемого кода

Чтобы создать канал, сначала создайте объект FeedProducer с помощью метода FeedProducer, а затем передайте ему следующие объекты:

  • объекту FeedIdConverter, реализуемому приложением;

  • объект FeedItemConverter, реализованный в приложении;

  • объект KnowledgeSyncProvider, который представляет создаваемую реплику.

Затем вызовите метод ProduceFeed и передайте ему объект Stream, содержащий пустой RSS-канал или Atom-канал. После завершения обработки этот объект Stream будет содержать канал FeedSync с элементами из реплики. Учтите, что поток необходимо открывать с правом доступа на чтение и для записи.

Чтобы создать частичный канал, передайте объект EndpointState методу ProduceFeed. В результате будет организован базовый план для добавочного канала, который содержит все элементы реплики, не входящие в базовый план.

Создание канала с помощью неуправляемого кода

Чтобы создать канал, сначала создайте объект IFeedProducerConsumerServices, передав значения CLSID_FeedSyncServices и IID_IFeedProducerConsumerServices функции CoCreateInstance. Затем создайте объект IFeedProducer с помощью метода IFeedProducerConsumerServices::CreateFeedProducer.

Чтобы создать канал, вызовите метод IFeedProducer::ProduceFeed и передайте ему следующие объекты:

  • объект IFeedIdConverter, реализованный в приложении;

  • объект IFeedItemConverter, реализованный в приложении;

  • объект ISyncProvider, который представляет создаваемую реплику;

  • объект IStream, содержащий пустой RSS-канал или Atom-канал. Учтите, что поток необходимо открывать с правом доступа на чтение и для записи.

После завершения обработки объект IStream будет содержать канал FeedSync с элементами из реплики.

Чтобы создать частичный канал, передайте объект IEndpointState методу IFeedProducer::ProduceFeed. В результате будет организован базовый план для добавочного канала, который содержит все элементы реплики, не входящие в базовый план.

См. также

Справочник

Microsoft.Synchronization.FeedSync

FeedProducer

EndpointState

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

Синхронизация веб-каналов

Компоненты веб-синхронизации Sync Framework

Интерфейс IFeedProducerConsumerServices

Интерфейс IFeedProducer

Интерфейс IEndpointState