Поделиться через


Архитектура синдикации

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

Эти классы тесно связаны с конструкциями, определенными в спецификации Atom 1.0, хотя некоторые имена различаются.

В Windows Communication Foundation (WCF) веб-каналы синдикации моделируются в виде операции службы другого типа, у которого возвращаемым типом является один из производных классов для класса SyndicationFeedFormatter. Извлечение веб-канала моделируется в виде обмена сообщениями «запрос-ответ». Клиент отправляет службе запрос, а служба отвечает. Сообщение с запросом задается протоколом инфраструктуры (например, чистым HTTP), а сообщение ответа содержит полезные данные в общепринятом формате синдикации (RSS 2.0 или Atom 1.0). Службы, реализующие подобные механизмы обмена сообщениями, называются службами синдикации.

Контракт службы синдикации состоит из набора операций, которые возвращают экземпляр класса SyndicationFeedFormatter. В следующем примере показано объявление интерфейса для службы синдикации.

[ServiceContract]
[ServiceKnownType(typeof(Atom10FeedFormatter))]
[ServiceKnownType(typeof(Rss20FeedFormatter))]
public interface IBlog
{
    [OperationContract]
    [WebGet(UriTemplate="GetBlog?format={format}", BodyStyle=WebMessageBodyStyle.Bare)]
    SyndicationFeedFormatter GetBlog(string format);       
}

Поддержка синдикации строится на базе модели программирования WCF REST, определяющей привязку WebHttpBinding, которая используется совместно с поведением WebHttpBehavior, чтобы веб-каналы были доступны в виде служб. Дополнительные сведения о модели программирования WCF REST см. в разделе Общие сведения о модели программирования WCF Web HTTP.

Bb412203.note(ru-ru,VS.100).gifПримечание
Спецификация Atom 1.0 позволяет указывать точность выборки в долях секунды во всех структурах даты. При сериализации и десериализации в реализации WCF доли секунды игнорируются.

Объектная модель

Объектная модель синдикации состоит из групп классов в следующих таблицах.

Классы форматирования:

Класс Описание

Atom10FeedFormatter

Класс, который выполняет сериализацию экземпляра SyndicationFeed в формат Atom 1.0.

Atom10FeedFormatter

Класс, который выполняет сериализацию классов, производных от SyndicationFeed, в формат Atom 1.0.

Atom10ItemFormatter

Класс, который выполняет сериализацию экземпляра SyndicationItem в формат Atom 1.0.

Atom10ItemFormatter

Класс, который выполняет сериализацию классов, производных от SyndicationItem, в формат Atom 1.0.

Rss20FeedFormatter

Класс, который выполняет сериализацию экземпляра SyndicationFeed в формат RSS 2.0.

Rss20FeedFormatter

Класс, который выполняет сериализацию классов, производных от SyndicationFeed, в формат RSS 2.0.

Rss20ItemFormatter

Класс, который выполняет сериализацию экземпляра SyndicationItem в формат RSS 2.0.

Rss20ItemFormatter

Класс, который выполняет сериализацию классов, производных от SyndicationItem, в формат RSS 2.0.

Классы объектной модели

Класс Описание

SyndicationCategory

Класс, представляющий категорию веб-канала синдикации.

SyndicationContent

Базовый класс, представляющий содержимое синдикации.

SyndicationElementExtension

Класс, представляющий расширение элемента синдикации.

SyndicationElementExtensionCollection

Коллекция объектов SyndicationElementExtension.

SyndicationFeed

Класс, представляющий объект веб-канала верхнего уровня.

SyndicationItem

Класс, представляющий элемент веб-канала.

SyndicationLink

Класс, представляющий ссылку в веб-канале или элементе синдикации.

SyndicationPerson

Класс, представляющий конструкцию Person спецификации Atom.

SyndicationVersions

Класс, представляющий поддерживаемые версии протоколов синдикации.

TextSyndicationContent

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

TextSyndicationContentKind

Перечисление, представляющее различные типы поддерживаемого текстового содержимого синдикации.

UrlSyndicationContent

Класс, представляющий содержимое синдикации, которое содержит URL-адрес другого ресурса.

XmlSyndicationContent

Класс, представляющий содержимое синдикации, которое не подлежит отображению в веб-обозрвеателе.

Базовыми абстракциями данных в объектной модели являются веб-канал и элемент, которые соответствуют классам SyndicationFeed и SyndicationItem. Веб-канал предоставляет метаданные соответствующего уровня (например, заголовок, описание и имя автора), расположение для хранения неизвестных расширений, а также набор элементов, из которых состоит остальное содержимое веб-канала. Элемент предоставляет метаданные соответствующего уровня (например, заголовок, краткое описание и дату публикации), расположение для хранения неизвестных расширений, а также блок содержимого, включающий остальное содержимое элемента. Базовые абстракции потока и элемента поддерживаются дополнительными классами, которые представляют общие структуры данных, описанные в спецификациях Atom 1.0 и RSS.

Сведения, хранящиеся в экземпляре веб-канала, можно преобразовать в различные форматы XML. Процесс преобразования в формат XML и обратно управляется классом SyndicationFeedFormatter. Это абстрактный класс; конкретные реализации для спецификаций Atom 1.0 и RSS 2.0 определяются классами Atom10FeedFormatter и Rss20FeedFormatter. Для использования производных классов веб-канала следует использовать Atom10FeedFormatter или Rss20FeedFormatter, поскольку они позволяют задавать производный класс веб-канала. Для использования производных классов элемента следует использовать Atom10ItemFormatter или Rss20ItemFormatter, поскольку они позволяют задавать производный класс элемента. Возможно также создание собственных производных реализаций класса SyndicationFeedFormatter, поддерживающих другие форматы синдикации.

Расширяемость

  • Ключевой особенностью протоколов синдикации является их расширяемость. Оба протокола, Atom 1.0 и RSS 2.0, позволяют добавлять в веб-каналы атрибуты и элементы, не определенные в спецификациях. Модель программирования синдикации WCF поддерживает два способа работы с пользовательскими атрибутами и расширениями: создание производных классов и использования слабо типизированного доступа. Дополнительные сведения см. в разделе Расширяемость синдикации.

См. также

Основные понятия

Общие сведения о синдикации WCF
Сопоставление объектной модели синдикации WCF моделям Atom и RSS

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

Модель веб-программирования HTTP WCF