新聞訂閱架構
新聞訂閱 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 | 類別,表示不會在瀏覽器中顯示的新聞訂閱內容。 |
物件模型中的核心資料抽象概念為「摘要」和「項目」,兩者分別對應至 SyndicationFeed 和 SyndicationItem 類別。 「摘要」會公開一些摘要層級的中繼資料 (例如,Title、Description 和 Author)、儲存未知延伸的位置,以及組成摘要其餘資訊內容的項目集合。 「項目」會提供一些項目層級的中繼資料 (例如,Title、Summary 和 PublicationDate)、儲存未知延伸的位置,以及包含項目其餘資訊內容的內容項目。 「摘要」和「項目」的核心抽象概念是由代表 Atom 1.0 和 RSS 規格所提及之一般資料建構的其他類別支援。
「摘要」執行個體中的資訊可以轉換為各種不同的 XML 格式。 SyndicationFeedFormatter 類別負責管理與 XML 間的轉換過程。 此類別是抽象的,而提供給 Atom 1.0 和 RSS 2.0 的具體實作分別為 Atom10FeedFormatter 和 Rss20FeedFormatter。 若要使用衍生的摘要類別,請使用 Atom10FeedFormatter<TSyndicationFeed> 或 Rss20FeedFormatter<TSyndicationFeed>,因為它們允許您指定衍生摘要類別。 若要使用衍生項目類別,請使用 Atom10ItemFormatter<TSyndicationItem> 或 Rss20ItemFormatter<TSyndicationItem>,因為它們允許您指定衍生的項目類別。協力廠商可衍生自己的 SyndicationFeedFormatter 實作來支援各種不同的新聞訂閱格式。
擴充性
- 擴充性是新聞訂閱通訊協定的一項重要功能。 Atom 1.0 和 RSS 2.0 都可讓您將屬性與項目新增至規格中未定義的新聞訂閱摘要。 WCF 摘要整合程式設計模型提供兩種使用自訂屬性與延伸模組的方式:衍生新類別與鬆散型別的存取。 如需詳細資訊,請參閱摘要整合擴充性。