共用方式為


新聞訂閱架構

新聞訂閱 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 實作時,將會忽略小數秒數。

物件模型

新聞訂閱的物件模型包含下表中的類別群組。

格式化類別:

類別 描述
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 格式。

物件模型類別:

類別 描述
SyndicationCategory 表示新聞訂閱摘要分類的類別。
SyndicationContent 表示新聞訂閱內容的基底類別。
SyndicationElementExtension 表示新聞訂閱項目延伸的類別。
SyndicationElementExtensionCollection SyndicationElementExtension 物件的集合。
SyndicationFeed 表示最上層摘要物件的類別。
SyndicationItem 表示摘要項目的類別。
SyndicationLink 類別,表示新聞訂閱摘要內的連結或項目內的連結。
SyndicationPerson 類別,表示 Atom Person 建構。
SyndicationVersions 類別,表示支援的新聞訂閱通訊協定版本。
TextSyndicationContent 類別,表示要對終端使用者顯示的任何 SyndicationItem 內容。
TextSyndicationContentKind 列舉,表示支援的不同文字新聞訂閱內容型別。
UrlSyndicationContent 類別,表示包含另一個資源 URL 的新聞訂閱內容。
XmlSyndicationContent 類別,表示不會在瀏覽器中顯示的新聞訂閱內容。

物件模型中的核心資料抽象概念為「摘要」和「項目」,兩者分別對應至 SyndicationFeedSyndicationItem 類別。 「摘要」會公開一些摘要層級的中繼資料 (例如,Title、Description 和 Author)、儲存未知延伸的位置,以及組成摘要其餘資訊內容的項目集合。 「項目」會提供一些項目層級的中繼資料 (例如,Title、Summary 和 PublicationDate)、儲存未知延伸的位置,以及包含項目其餘資訊內容的內容項目。 「摘要」和「項目」的核心抽象概念是由代表 Atom 1.0 和 RSS 規格所提及之一般資料建構的其他類別支援。

「摘要」執行個體中的資訊可以轉換為各種不同的 XML 格式。 SyndicationFeedFormatter 類別負責管理與 XML 間的轉換過程。 此類別是抽象的,而提供給 Atom 1.0 和 RSS 2.0 的具體實作分別為 Atom10FeedFormatterRss20FeedFormatter。 若要使用衍生的摘要類別,請使用 Atom10FeedFormatter<TSyndicationFeed>Rss20FeedFormatter<TSyndicationFeed>,因為它們允許您指定衍生摘要類別。 若要使用衍生項目類別,請使用 Atom10ItemFormatter<TSyndicationItem>Rss20ItemFormatter<TSyndicationItem>,因為它們允許您指定衍生的項目類別。協力廠商可衍生自己的 SyndicationFeedFormatter 實作來支援各種不同的新聞訂閱格式。

擴充性

  • 擴充性是新聞訂閱通訊協定的一項重要功能。 Atom 1.0 和 RSS 2.0 都可讓您將屬性與項目新增至規格中未定義的新聞訂閱摘要。 WCF 摘要整合程式設計模型提供兩種使用自訂屬性與延伸模組的方式:衍生新類別與鬆散型別的存取。 如需詳細資訊,請參閱摘要整合擴充性

另請參閱