【IIS7】 FTDセミナー振り返りシリーズ Vol.1

この投稿の内容は@ITさんのWebサイト向けに書かせていただいた記事と重複しているところも多くありますが、更新された内容も書かれています。

Part I. IIS, Yesterday & Today

最初にお聞きしたところ、会場では IIS6 をお使いの方が多い状況でした。ということで実はこの Part I も飛ばさずにお話をしました。

IIS5での厳しい体験、IIS6での再出発、IIS7での互換性高く しかし 新しいプラットフォームへの流れをまずご紹介しました。いつも通り、厳しい体験の話は CodeRed や Nimda の話でした。開発チームもすごく辛かった時期でもあります。IIS6 のセキュリティ一義な考え方、それを受け継いでいながらしかし 新しい構造への一歩を踏み出したのが IIS7 です。

3年お話してきてとても思うのは、IIS7を正確に捉えるには大きく二つの要素を把握することが大事である点を強調しました。そこでこの Part I は主にこの2点にフォーカスしています。

- 新しい構成システム(環境設定)
- モジュール構造

新しい構成システム

新しい構成システムは .config 形式の XML ファイル群で、今までの metabase.bin や metabase.xml とはまったく違うシステムです。簡単に要約すると、ASP.NET の構成システムを参考に作られた仕組みになります。

下記は ダウンロードセンターで入手できる XML Notepad 2007 で各ファイルを開いて、構成セクショングループの階層の画面ショットをとったものです。

左から machine.config(.NET Framework 設定)、root web.config(ASP.NET 設定)、applicationHost.config(IIS7設定)のものです。

image imageimage

これらとともに継承してサイトやアプリケーションで設定を上書き(Override)することができ、例えば下記のような設定ができます。下図の例は左がサイトレベルでのディレクトリ参照を許可し、アプリケーションレベルで index.php を追加した場合になります。

image image

これらが実はメモリー上でうまく合わさって構成が成り立っています。
ここで実は R2 の IIS から搭載される 構成エディターを少しご覧いただきました。構成エディターはこのマージされたシステム構成を把握するのにとてもいいツールになっています。
image

 

 

 

 

 

そして、この構成システムはすごく単純でありながらほぼすべての設定がこのテキストファイルベースでできること、どう書けばいいのかはスキーマファイルが用意されていることをお伝えしました。IISの開発チームは最近でこそ新しい構成エディターを使い始めているようですが、実際には.configファイルを書く際にスキーマファイルを「教科書」のように使っていた点もお話しました。スキーマに書いてない設定は動かないので「バイブル」と言っていいかもしれません。

モジュール構造

IIS7 の二つ目の大きな特徴は各 IIS のサーバー機能が一つ一つ独立した DLL になったことが挙げられます。セキュリティ面、リソース面において今までの IIS に比べると自由度が大幅に向上しました。そして、IIS のサーバー機能を皆さんが.NETのコードで開発することもできる(& 売ることができる)ようになったことで新しいビジネスモデルも登場しています。

次にお話したのは二つのモードについてで、IIS5互換モードが無いこと、つまり、IIS5互換モードで動作しているアプリケーションはあくまでもIIS5対応のアプリケーションであって、IIS6対応したアプリケーションではないことなどをお話しました。この辺は当日十分にお話できないと思い、下記の投稿を事前にしていました。

【IIS7】 IIS5からIIS7への移行を考えるとき

IIS7 におけるモードは ASP.NET の動作を切り替えるモードであり、アプリケーションの汎用的な互換性とは関係がありません。もちろん ASP.NETアプリケーションの互換性には影響があります。

image

モジュール構造は実は裏でとても大きな影響を開発プロセスに与えました。開発チームは OS の出荷(メジャー、マイナー、サービスパック)を待たずに IIS のサーバー機能を個別に出荷できるようになったのです。このことで登場してきたのが IIS Extensions です。以前は OOB ツールと呼んでおり、このことは下記の Tech・Ed の振り返りで書きました。

【IIS7】 Tech・Ed 2008 セッション振り返り(01)

サーバー機能の出荷方法の自由度が上がったこの変更により、下記の図のような構造でIISの環境というのはインストールされます。R2ではいくつかの Extension を標準機能として取り込んだ形になるので 標準機能+標準機能にならなかったExtension +今後開発されてくる Extension と利用できるサーバー機能の位置づけが少し複雑になります。

image

そして Vol.–1 で書いたように R2 の IIS のバージョンは IIS 7.5 になります。WFetchでヘッダーを確認するデモのほか、すごく簡単ですが、下記をやってレスポンスヘッダーでちゃんと 7.5 を返しているのをご覧いただきました。

Windows PowerShell を開きます!
$x = New-Object System.Net.WebClient
$x.OpenRead(“https://localhost”)
$x.ResponseHeaders.GetValues(“Server”)

3/15 思い切りミスタイプしてましたので直しました。すみません。

この Part I の最後では IIS Extensions の現在の出荷状況の表をつけました。セッション前日にも状況が変わったんですが、今日時点でもまーた変わってます。IIS Smooth Streaming のベータが上がりました。
※ IIS Extensions の状況についてこの図は参考情報で、実際の最新状況は Extensions のサイトできちんと確認ください。

image

以上、Part I でした。。。とっても要約するとこんな感じです。(*^_^*)