Syndication 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 プログラミング モデルの概要」を参照してください。
注
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 | ブラウザーに表示されない配信コンテンツを表すクラス。 |
オブジェクト モデルの主要なデータ抽象化は Feed と Item であり、 SyndicationFeed クラスと SyndicationItem クラスに対応します。 フィードでは、フィード レベルのメタデータ (タイトル、説明、作成者など)、不明な拡張機能を格納する場所、フィードの残りの情報コンテンツを構成する一連のアイテムが公開されます。 アイテムは、アイテム レベルのメタデータ (タイトル、概要、PublicationDate など)、不明な拡張機能を格納する場所、およびアイテムの残りの情報コンテンツを含むコンテンツ要素を使用できるようにします。 フィードと項目のコア抽象化は、Atom 1.0 および RSS 仕様で参照される一般的なデータコンストラクトを表す追加のクラスでサポートされています。
フィード インスタンスに含まれる情報は、さまざまな XML 形式に変換できます。 XML との間の変換プロセスは、 SyndicationFeedFormatter クラスによって管理されます。 このクラスは抽象クラスです。Atom 1.0 および RSS 2.0、 Atom10FeedFormatter 、および Rss20FeedFormatterの具体的な実装が提供されます。 派生フィード クラスを使用するには、派生フィード クラスを指定できるため、 Atom10FeedFormatter<TSyndicationFeed> または Rss20FeedFormatter<TSyndicationFeed> を使用します。 派生アイテム クラスを使用するには、派生アイテム クラスを指定できるため、 Atom10ItemFormatter<TSyndicationItem> または Rss20ItemFormatter<TSyndicationItem> を使用します。サード パーティは、異なるシンジケーション形式をサポートする独自の SyndicationFeedFormatter の実装を派生させることができます。
拡張性
- シンジケーション プロトコルの主な機能は、拡張性です。 Atom 1.0 と RSS 2.0 の両方で、仕様で定義されていないシンジケーション フィードに属性と要素を追加できます。 WCF シンジケーション プログラミング モデルには、カスタム属性と拡張機能を操作する 2 つの方法があります。新しいクラスの派生と緩やかに型指定されたアクセスです。 詳細については、「 シンジケーション機能拡張」を参照してください。