ブログなどで配布されているRSSをサーバ側で取り込んで、FlashやHTMLで表示します。RSSにはいろいろなフォーマットがありますが、このRSSリーダーでは、RSS 0.91 1.0 2.0 ATOM 0.3に対応しています。

おおざっぱにまとめると上のような図になります。サーバ側のモジュールは、parser、round、optionの3つのColdFusion コンポーネントに分かれています。parserはRSSを巡回するための機能を持ち、roundから呼び出されます。roundは、取り込んだRSSをMySQLに格納し、クライアントから要求があった場合には、そのデータを返します。optionは、RSSリーダー本体の機能を管理するためのもので、RSSの処理は別にしています。
クライアントは、RSSリーダー、Puchi RSS、HTML版と3形態あります。また、ここには書いていませんが、携帯用もあります。roundを通して、データを取得するようになっています。ここで、ColdFusionの強さがあるのですが、Flash、HTMLとそれぞれ表示形態は違いますが、サーバ側の処理は共通のroundを使っています。ColdFusion コンポーネントとして、作成すると、Flash、CFMLから呼び出せるため、このような処理ができます。
RSSの取得は、CFHTTPタグを使って取得しますが、自動で文字コードを判別することまではやってくれないので、自分で調べています。最初にUTF-8で取得し、encodingを確認します。この時点で感じは化けているかもしれませんが、アルファベットのデータは取り込めます。
確認後、もう一度CFHTTPタグを呼び出して、再取得します。RSSリーダーでは一度取り込んだRSSの情報は、データベースに保存するので、文字コードが何を使っているかも保持しています。この作業は、最初の1回だけ行われ、以後は、調べた文字コードを元に取り込むようになります。
また、If-Modified-Sinceを渡すようにしていて、データの取得を最小限に抑えるようにしています。CFHTTPタグで渡す場合には、CFHTTPPARAMで定義してやります。
取得したRSSはそのままXMLに保存せずに、データベースに格納できるように、項目ごとにレコードに変換しています。レコードへの変換は、RSSのバージョンの違いを吸収する役目もあります。parser内で新たレコードセットを作成し、RSSの各バージョンから共通のレコードセットにした後に、MySQLへと保存するroundへと渡しています。