联合体系结构

联合 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(zh-cn,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

一个表示 Atom Person 构造的类。

SyndicationVersions

一个表示所支持的联合协议版本的类。

TextSyndicationContent

一个表示要显示给最终用户的任何 SyndicationItem 内容的类。

TextSyndicationContentKind

一个表示所支持的不同文本联合内容类型的枚举。

UrlSyndicationContent

一个表示包含指向另一资源的 URL 的联合内容的类。

XmlSyndicationContent

一个表示不显示在浏览器中的联合内容的类。

对象模型中的核心数据抽象是源和项,它们分别对应于 SyndicationFeedSyndicationItem 类。源会公开一些源级别的元数据(例如,标题、说明和作者)、一个存储未知扩展的位置以及组成源的其余信息内容的一组项。项可以提供一些项级别的元数据(例如,标题、摘要和发布日期)、一个存储未知扩展的位置以及一个包含项的其余信息内容的内容元素。源和项这两个核心抽象由表示 Atom 1.0 和 RSS 规范中引用的常见数据构造的其他类提供支持。

源实例中携带的信息可以转换成各种 XML 格式。与 XML 的来回转换过程由 SyndicationFeedFormatter 类管理。此类是一个抽象类;为 Atom 1.0 和 RSS 2.0 提供的具体实现分别为 Atom10FeedFormatterRss20FeedFormatter。若要使用派生源类,应使用 Atom10FeedFormatterRss20FeedFormatter,您可以通过它们指定派生源类。若要使用派生项类,应使用 Atom10ItemFormatterRss20ItemFormatter,您可以通过它们指定派生项类。第三方可以派生各自的 SyndicationFeedFormatter 实现以支持不同的联合格式。

可扩展性

  • 联合协议的一个主要功能是扩展性。Atom 1.0 和 RSS 2.0 都允许您向联合源中添加规范中没有定义的属性和元素。WCF 联合编程模型提供了两种使用自定义属性和扩展的方法:派生新类和松散类型访问。有关更多信息,请参见 联合扩展性.

另请参见

概念

WCF 联合概述
WCF 联合对象模型如何映射到 Atom 和 RSS

其他资源

WCF Web HTTP 编程模型