連載:実践! WCFプログラミング第1回 WCFを使用してRSS/Atomフィーダを作成するデジタルアドバンテージ 岸本 真二郎2008/06/27 |
|
いまさらだが、ブログをはじめインターネット上の多くのWebサイトは、RSSを利用してサイトの更新情報を容易に取得できるようにしている。そしてRSSリーダーとしては、Windowsデスクトップ用やWebベースのものが多数提供されており、多くのメール・クライアントやWebブラウザもRSSに対応している。RSSによる情報配信/閲覧の仕組みは、もはやインターネットには欠かせない存在といえるだろう。
このような背景から、.NET Frameworkの最新版である.NET Framework 3.5では、WCF(Windows Communication Foundation)が拡張され、RSSおよびAtomによるサイトの更新情報を提供することが可能になった。本稿ではこの機能を利用し、RSSの配信サービスを作成しながら、WCFのプログラミングを学んでいく。
■WCFとは?
WCFとは、SOAP XML Service、WSDL、分散トランザクション、メッセージ・キューイングといったさまざまな分散テクノロジの実装を、統一されたプログラミング・モデルで行えるようにしたものだ(WCFの概要については「Windows Communication Foundation概説」を参照)。
WCFは.NET Framework 3.0で導入されたフレームワークであるが、いま述べたように.NET Framework 3.5ではいくつかの拡張が行われており、実装可能な分散テクノロジの1つとして、RSSとAtomに対応している。
■RSS/Atomとは?
RSSおよびAtomは、Webサイトに含まれるコンテンツの更新情報をXML形式で配信するための仕組みで、それぞれに仕様が定められている。配信されるデータ(XMLデータ)は「フィード(feed)」と呼ばれ、その配信を行うプログラムやサービスは「フィーダ(feeder)」と呼ばれる。また、RSS/Atomによる配信処理は「シンジケーション(Syndication)」と呼ばれる。
RSS/Atomの生い立ちについては紆余(うよ)曲折があるようで、なかなか簡潔に説明しづらい部分があるのだが、RSSのバージョンは0.91、1.0、2.0などが、一方のAtomは現在1.0が存在する。RSSで注意が必要なのは、バージョンごとに大きく仕様が異なり、それぞれのバージョンに個別に対応しなければならない点である。一般的にはRSS 1.0とRSS 2.0、そしてAtom 1.0の3種類が比較的多く使われているようだ。
ただし、WCFがサポートするフィードの種類は、RSS 2.0 とAtom 1.0の2種類のみである。
RSS 1.0のプログラミングについては、「.NET TIPS:[ASP.NET]データベースからRSSフィード情報を生成するには?」で紹介しているので参考にしていただきたい。またRSSについては、「特集:サイトの更新情報を提供する標準言語RSS」も参照されたい。
RSS/Atomフィードの構成
ここではまず、RSS 2.0とAtom 1.0の内容について簡単に説明しておく。
■RSS 2.0
RSS 2.0のフィードは、「チャネル情報(channel)」と複数個の「アイテム(item)」で構成されている。
チャネルはフィード全体の情報を示すもので、フィードのタイトルやサイトのURL、フィード(サイト)の概要などが記述される。それに対してアイテムは、更新された1ページ分の情報を含む。これには、ページのタイトル、概要、URLなどが含まれる。例えばサイト上に10個(≒10ページ)の更新情報があるとすると、フィードには10個のアイテムが含まれることになる。
後ほど実際にプロジェクトを作成してRSSフィード処理を実装するが、RSS/AtomはどちらもXMLドキュメントである。RSS 2.0では、<rss>というトップレベルの要素の中に、いま説明したチャネルを表す<channel>、アイテムを表す<item>といったタグを使ってXMLドキュメントを構成する。その概略は次のようになる。
| |
リスト1 RSS 2.0のフィードの構成 |
サイトの概要を示す<channel>要素には、title(フィードの名称)、link(WebサイトのURL)、description(サイトの説明)といった要素を含める。このほかの要素としては、language(言語情報:ja-jp、en-USなど)、copyright、pubDate(発行日)、image(フィードを表示する際に利用される画像)などの要素も含められる。さらに次に説明する個々のページの更新情報を記述した<item>要素が含まれる。
<item>要素は更新されたページの情報を設定する。この要素には、title(タイトル)、description(ページの概要)、author(作成者)、category(カテゴリ情報)、pubDate(発行日)などの要素を含める。
■Atom 1.0
一方Atom 1.0は、XMLの構造的にはRSS 2.0とさほど変わりはなく、トップレベルの要素が<feed>になる。ここにRSS 2.0のチャネルに相当する内容がセットされ、アイテムに相当する要素は<entry>要素で表現される。<entry>要素は<feed>要素内に配置される(これもRSS 2.0とほぼ同じ構成)。
■WCFが出力するフィード
以上のような要素を含むXMLドキュメントを作成すれば、RSSフィードが出来上がる。これは手作業でも可能なわけだが、WCFを用いることで、RSS/Atomの仕様にのっとったXMLドキュメントの作成と配信処理をWCFに任せてしまうことができるわけだ。
実際にWCFで作成したフィード(RSS 2.0)の内容は次のようになる。
| |
リスト2 WCFで生成したRSS 2.0のフィードの例 |
同じ内容をAtom 1.0で生成した場合を以下に示す。要素が若干増えている。
| |
リスト3 WCFで生成したAtom 1.0のフィード |
INDEX | ||
実践! WCFプログラミング | ||
第1回 WCFを使用してRSS/Atomフィーダを作成する | ||
1.WCFとは?/RSS/Atomとは? | ||
2.RSS/Atomフィーダのプログラミング | ||
3.フィード本体の作成 | ||
4.実際にどのように配信するか?/IISでフィードを配信する | ||
「実践! WCFプログラミング」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|