Программирование HTTP с использованием WCF - Новый интерфейс API объединения

ОГЛАВЛЕНИЕ

Новый интерфейс API объединения

Представьте себе канал RSS. Если вы поступаете так же, как я, вы сразу же подумаете о канале новостей или блоге. Объединения (RSS и ATOM являются форматами объединения) могут выразить гораздо больше. Рассуждая абстрактно, объединенное содержимое является способом представления набора данных. Этот набор данных может быть практически чем угодно: числом вомбатов в жилых районах в радиусе 50 миль вокруг Сиднея, последними 10 заказами на поставку стоимостью более 100 долларов или числом бумерангов, произведенных компанией Contoso в прошлом месяце.

В .NET Framework 3.5 включена мощная поддержка создания и использования объединенного содержимого. Инфраструктура поддерживает создание и использование как формата RSS 2.0, так и формата ATOM 1.0, различных средств добавления расширений объединения и даже возможность внедрения дополнительных форматов. Модель программирования скрывает от разработчика особенности форматов объединения, что облегчает их использование.

До выхода версии 3.5 не существовало стандартного способа для создания или использования объединенного содержимого с помощью .NET Framework. Хотя новые функции объединения были написаны группой WCF, они не зависят от WCF. На деле, все типы, связанные с объединением, являются частью пространства имен System.Syndication, хотя они располагаются в сборке System.ServiceModel.Web.dll. Возможности объединения, предоставляемые .NET Framework 3.5, можно использовать из любого процесса, в котором размещается AppDomain (ASP.NET, приложения WPF, службы NT и т.д.). Эта возможность подразумевает, что можно обслуживать или использовать объединенное содержимое посредством любого транспортного средства, не обязательно протокола HTTP. Однако, в сочетании с моделью программирования HTTP в WCF объединение можно добавить также и в существующие службы SOAP/WS-*.

В новый объединенный интерфейс API входят типы, обобщающие в особый формат отдельный объединенный канал и элементы этого канала, а также типы, которые может преобразовывать данный канал. Тип System.Syndication.SyndicationFeed является нейтральным по отношению к формату представлением объединенного канала. SyndicationFeed содержит список объектов SyndicationItem. SyndicationFeed без набора объектов SyndicationItem подобен стручку без горошин, поскольку объект SyndicationItem является просто представлением элемента в канале.

После того, как SyndicationFeed заполнен набором объектов SyndicationItem, SyndicationFeedFormatter<T> может преобразовать этот канал в конкретный формат. Существует два типа, являющихся производными от SyndicationFeedFormatter<T>: Rss20FeedFormatter и Atom10FeedFormatter. Как подразумевают их имена, эти типы преобразуют экземпляр SyndicationFeed в форматы RSS 2.0 и ATOM 1.0 соответственно.