配信のアーキテクチャ

配信 API は、形式に依存せず、さまざま形式で配信コンテンツをネットワークに書き込むことができるプログラミング モデルを提供することを目的としています。抽象データ モデルは、次のクラスで構成されています。

これらのクラスは、一部の名前が異なっていますが、Atom 1.0 仕様に規定されるコンストラクトに厳密にマップされています。

Windows Communication Foundation (WCF) では、配信フィードはその戻り値の型が SyndicationFeedFormatter の派生クラスの 1 つである別の種類のサービス操作としてモデル化されています。フィードの取得は要求/応答のメッセージ交換としてモデル化されています。クライアントはサービスに要求を送信し、サービスがこれに応答します。要求メッセージはインフラストラクチャ プロトコル (生の 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);       
}

配信のサポートは、WebHttpBinding バインディングを定義する WCF REST プログラミング モデル上に組み込まれています。このバインディングを WebHttpBehavior と共に使用すると、フィードをサービスとして利用できるようになります。WCF REST プログラミング モデル詳細情報、「WCF Web HTTP プログラミング モデルの概要」を参照してください。

Bb412203.note(ja-jp,VS.100).gif注 :
Atom 1.0 仕様では、date コンストラクトで小数秒を指定できます。シリアル化および逆シリアル化する場合、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

ブラウザーに表示されない配信コンテンツを表すクラス。

オブジェクト モデル内における抽象化コア データは Feed と Item であり、SyndicationFeed クラスと SyndicationItem クラスに対応します。Feed は、フィード レベルのメタデータの一部 (Title、Description、Author など)、未知の拡張を格納する場所、およびフィードの情報コンテンツの残りの部分を作成する一連の項目を公開します。Item では、項目レベルのメタデータの一部 (Title、Summary、PublicationDate など)、未知の拡張を格納する場所、および項目の情報コンテンツの残りの部分を含むコンテンツ要素を利用できます。Feed と Item のコア抽象化は、Atom 1.0 および RSS の仕様で参照されている共通データ コンストラクトを表す追加のクラスによってサポートされています。

Feed インスタンスに含まれる情報は、各種の XML 形式に変換できます。XML との間の双方向の変換処理は、SyndicationFeedFormatter クラスによって管理されます。このクラスは抽象クラスであり、具体的な実装は Atom 1.0 および RSS 2.0 (Atom10FeedFormatter および Rss20FeedFormatter) で提供されます。Feed の派生クラスを使用するには、派生した Feed クラスを特定できるように Atom10FeedFormatter または Rss20FeedFormatter のいずれかを使用します。Item の派生クラスを使用するには、派生した Item クラスを特定できるように Atom10ItemFormatter または Rss20ItemFormatter のいずれかを使用します。各種の配信形式をサポートするために、サード パーティでは SyndicationFeedFormatter の独自の実装を派生することができます。

機能拡張

  • 配信プロトコルの主な機能は拡張性です。Atom 1.0 と RSS 2.0 では、仕様で定義されていない属性および要素を配信フィードに追加できます。WCF の配信プログラミング モデルには、カスタム属性と拡張機能を扱う方法として、新しいクラスの派生と弱い型指定のアクセスの 2 つの方法が用意されています。詳細については、次のトピックを参照してください。 配信の拡張.

参照

概念

WCF 配信の概要
WCF 配信オブジェクト モデルを Atom や RSS に割り当てる方法

その他のリソース

WCF Web HTTP プログラミング モデル