Silverlight 2をApacheで使うためのイロハ--Silverlight 2の通信機能

dragan10
2008-06-04 16:39:01
  • このエントリーをはてなブックマークに追加

 3月5日から開催されたMix 08ではSilverlight 2のβ1リリースが目玉のひとつとなった。すでに使っている方も多いだろう。そして本日から、Silverlight 2.0のベータ2の提供も予定されていることは、builderの記事などでご存じだろう。

 Silverlight 2の特徴の1つに強力な通信機能がある。サーバサイドと通信し、多彩な方法でデータのやりとりが可能なのだ。Mix 08以降、Silverlight 2に関するチュートリアルなどもどんどん出てきているので(まだ英語のものばかりだが)、実際に試してみる材料には事欠かないといえるだろう。

 しかし、チュートリアルなどで使われているサーバサイドの製品や技術が(仕方ないとはいえ)、マイクロソフトのものばかりというのが不満といえば不満なところ。Silverlight 2の持つ可能性は非常に大きい。大きいだけに、すでに運用されているオープンソースの製品を使ったサーバのフロントエンドとして、Silverlight 2を使う方法も知りたいところだ。

 本稿では、Silverlight 2をホストするサーバとしてApacheを、サーバサイドのプログラミングにはPHPを使う。オープンソースのWebアプリケーションとしては、もっともよく使われる組み合わせの1つであることに異論はないだろう。この構成のサーバで、Silverlight 2のアプリケーションを使う場合の「勘所」について調べていこう。

 本稿は4回連載の予定で、以下のような内容をお伝えする。

  1. Silverlight 2の通信機能についての解説
  2. Apacheとの基本的な通信と認証
  3. Cookieを使ったサーバサイドスクリプトとの通信
  4. その他の話題

 それでは、早速始めよう。

Silverlight 2の通信機能について

 Silverlight 2は、.NET Frameworkのサブセットを内蔵しており、サーバサイドとの通信に関してもC#などでプログラミングできる。Windowsベースのプログラマであれば、普段とあまり変わらないスタイルで開発を進めることができるだろう。

 Silverlight 2での通信は、基本的にHTTPで行う。ソケットもサポートされてはいるが、現時点では例外的なものだと考えておくほうがよいだろう。HTTPでの通信は、WebClientやWebRequestといったクラスを使えば、とても簡単だ。

 WebClientは、いわば簡易型のHTTP通信用クラスで、機能が限定されている代わりに非常に簡単に使うことができる。HTTPのリクエストの種類はGETに限定されてしまっている。

 WebRequestはもうすこし幅広い使い方が可能なクラスだ。POSTリクエストを投げることもできるし、HTTPのリクエストヘッダの操作といったこともできるようになっている。

 このほか、Silverlight 2にはWCF(Windows Communication Foundation)のサーバと通信する機能もある。BasicHttpBindingというクラスを使えば、WCFのサービスとの間でCLRのオブジェクトをやりとりすることができる。この通信の実体はSOAPによるものだ。

 本稿では、WebClientやWebRequestを使って、オープンソースのサーバと通信をする。BasicHttpBindingについては別の機会に譲ろう(β2の時点で、BasicHttpBindingでの開発手順には多少の変化もありそうだ)。

Apacheとの通信

 Apacheについては、今更説明の必要もないだろう。本稿では、Apache 2.2を使う。

 もちろんApacheとはHTTPで通信することになる。Silverlight 2をApache 2と通信させる上で、以下のような疑問が浮かぶ。

  • 認証をどう扱うか。Basic認証や、フォームを使った認証はSilverlight 2ではどうやったらいいのか?
  • Cookieはどう扱うのか?
  • リダイレクトはどう扱われるのか?
  • HTTPSは使えるのか?

 これらの疑問に、答えをひとつずつ出していくことにしよう。まずは認証の話から始めることにしたい。

Webアプリケーションの認証

  • 新着記事
  • 特集
  • ブログ