联合体系结构

联合 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 编程模型概述

注释

Atom 1.0 规范允许在其任何日期构造中指定小数秒。 在序列化和反序列化时,WCF 实现会忽略秒的小数部分。

对象模型

内容发布的对象模型由以下表中的类群组成。

格式设置类:

班级 DESCRIPTION
Atom10FeedFormatter 用于将 SyndicationFeed 实例序列化为 Atom 1.0 格式的类。
Atom10FeedFormatter<TSyndicationFeed> 用于将 SyndicationFeed 派生类序列化为 Atom 1.0 格式的类。
Atom10ItemFormatter 用于将 SyndicationItem 实例序列化为 Atom 1.0 格式的类。
Atom10ItemFormatter<TSyndicationItem> 用于将 SyndicationItem 派生类序列化为 Atom 1.0 格式的类。
Rss20FeedFormatter 用于将 SyndicationFeed 实例序列化为 RSS 2.0 格式的类。
Rss20FeedFormatter<TSyndicationFeed> 用于将 SyndicationFeed 派生类序列化为 RSS 2.0 格式的类。
Rss20ItemFormatter 用于将 SyndicationItem 实例序列化为 RSS 2.0 格式的类。
Rss20ItemFormatter<TSyndicationItem> 用于将 SyndicationItem 派生类序列化为 RSS 2.0 格式的类。

对象模型类:

班级 DESCRIPTION
SyndicationCategory 一个表示联合源类别的类。
SyndicationContent 一个表示联合内容的基类。
SyndicationElementExtension 一个表示联合元素扩展的类。
SyndicationElementExtensionCollection SyndicationElementExtension 对象的集合。
SyndicationFeed 一个表示顶级源对象的类。
SyndicationItem 一个表示源项的类。
SyndicationLink 一个表示联合源或联合项中的链接的类。
SyndicationPerson 一个表示 Atom Person 构造的类。
SyndicationVersions 一个表示所支持的联合协议版本的类。
TextSyndicationContent 一个类,表示要向最终用户显示的任何 SyndicationItem 内容。
TextSyndicationContentKind 一个表示所支持的不同文本联合内容类型的枚举。
UrlSyndicationContent 一个表示包含指向另一资源的 URL 的联合内容的类。
XmlSyndicationContent 一个表示不显示在浏览器中的联合内容的类。

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

Feed 实例中携带的信息可以转换为各种 XML 格式。 转换到 XML 和从 XML 转换的过程由 SyndicationFeedFormatter 类管理。 此类是抽象的;具体实现适用于 Atom 1.0 和 RSS 2.0, Atom10FeedFormatter 以及 Rss20FeedFormatter。 若要使用派生的Feed类,请使用任 Atom10FeedFormatter<TSyndicationFeed>Rss20FeedFormatter<TSyndicationFeed>,因为它们允许您指定一个派生的Feed类。 要使用派生项类,可以使用 Atom10ItemFormatter<TSyndicationItem>Rss20ItemFormatter<TSyndicationItem>,因为它们允许您指定派生项类。第三方可以派生其自己的 SyndicationFeedFormatter 实现,以支持不同的联合格式。

可扩展性

  • 联合协议的关键功能是扩展性。 Atom 1.0 和 RSS 2.0 都允许在聚合源中添加规范中未定义的属性和元素。 WCF 联合编程模型提供了两种使用自定义属性和扩展的方法:派生新类和松散类型访问。 有关详细信息,请参阅联合扩展性

另请参阅