Silverlight 2をApacheで使うためのイロハ--原理と実装

dragan10
2008-07-15 08:00:00
  • このエントリーをはてなブックマークに追加

Apacheの準備

 次に、今回のテーマであるオープンソースのサーバの用意をしよう。

 Apache Foundationのウェブサイトから、Windowsバイナリ版のApache2.2をダウンロードする(執筆時点ではapache_2.2.8-win32-x86-openssl-0.9.8g.msiが最新)。

 インストーラをダブルクリックし、指示に従ってインストールしよう。この記事に関する限り、設定はすべてデフォルト通りで進めてよい。セキュリティの設定は後でファイルを編集して行う。

 インストールの途中で、Apacheを実行するやり方としてWindowsのサービスとして自動起動させるのか、あるいはユーザがいちいち起動させるかを聞かれる(画像4)。これは好みで決めればよいだろう。今回はサービスで起動する設定でインストールした。

画像4 画像4

 インストールが終わったら、インストールがうまくいっていることを確認しよう。ブラウザで「http://127.0.0.1/」にアクセスし、画像5のようなページが表示されたらOKだ。

画像5 画像5

 続いてアクセス権を設定しよう。Apacheのアクセス権の設定にはいろいろなやり方があるが、ここでは一番簡単なやり方ですませる。必要なのは、パスワードを管理するファイルの作成と、Apacheの設定ファイルのhttpd.confの編集だ。

 パスワードの管理ファイルは、C:\Program Files\Apache Software Foundation\Apache2.2\binにあるhtpasswd.exeで作成する。以下のコマンドで、パスワードファイルを新規作成して、ユーザを登録しよう。

cd C:\Program Files\Apache Software Foundation\Apache2.2\
bin\htpasswd ?c conf\passwd <ユーザ名>

 こうするとconf\passwdというパスワード管理ファイルが作成され、ユーザのパスワードが聞かれる。パスワードを設定すれば、パスワード管理ファイルはできあがりだ。

 次にApacheの設定ファイルhttpd.confを編集しよう。デフォルト設定でインストールしたなら、C:\Program Files\Apache Software Foundation\Apache2.2\confにhttpd.confがあるので、これを適当なエディタで編集する。

 リスト1の内容をhttpd.confの最後に追加して、サービスを再起動する。http://127.0.0.1/にアクセスしてみて、先ほどと同じように表示されることを確認しよう。もしhttpd.confの内容に問題があればApacheのサービスが起動しないので(イベントログにエラーが記録されているはずだ)、もう一度内容を見直そう。

リスト1


    AllowOverride None
    Options None
    Order allow,deny
    Allow from all


Alias /silverlight "C:\Users\*******\Documents\Visual Studio 2008\Projects\SilverlightAndApache\SilverlightAndApache\SilverlightAndApache\ClientBin"


    Order deny,allow
    AuthType Basic
    AuthName "Restricted Resource"
    AuthUserFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/passwd"
    require valid-user

コード

 ここでVisual Studioに戻って、Silverlight 2のアプリケーションを作っていこう。

 はじめにUIを作る。リスト2のXAMLをPage.xamlに書けばよい。これでボタンが2つと、アクセスした結果が表示されるテキストボックスを持ったUIができあがる。

リスト2 リスト2

 コードはPage.xaml.csに書く(ソリューション・エクスプローラのPage.xamlのノードを展開すると、その下にPage.xaml.csがあるはずだ)。ここでは触れないが、コードを書くときはIntelliSenseを上手に使おう。Silverlight.netで提供されているチュートリアルなどを参考にしてほしい。

 コードは非常に単純なので、あまり説明の必要もないだろう。10行目と17行目がボタンへのハンドラの追加だ。ハンドラの指定はXAML側に書くこともできるが、マイクロソフトのサンプルの多くでは、C#のコード側でハンドラを追加していることが多い。

 ボタンのハンドラ(Free_ClickおよびRestricted_Click)では、HTTPのGETリクエストの送信を行っている。Silverlight 2での通信はすべて非同期処理で書くようになっているので、これらのハンドラの処理は、HTTPのレスポンスを処理する関数を指定してからリクエストを送って終了する。

 レスポンスを処理する関数もごく簡単だ。ここではエラーがあった場合にはエラーコードを、なかった場合にはレスポンスの内容をテキストボックスにセットしている。

  • コメント(1件)
#1 anonymous   2010-01-21 07:00:02
サーバ側ソースコードの掲載忘れとはお粗末な。。。
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]