概要
IISアーキテクチャについて紹介しているページを日本語でまとめてみました。
Introduction
IIS7.0以上では下記を含んだ request processing architecture を提供しています。
- Windows Process Activation Serive(WAS)によりHTTP/HTTPS以外のプロトコルも利用可能
- モジュール追加/削除のカスタマイズが可能なエンジン
- IISとASP.NET の統合request processing パイプライン を提供
IIS Components
下記の機能が存在する
-
Protocol Listeners
Protocol Listenersは特定のプロトコルのリクエストを受け取るための基本的な機能。例えば、ブラウザからリクエストを受け付け、そのリクエストをIISに送り、処理させる。その後、クライアントにレスポンスを返す。(HTTP/HTTPSについてはHTTP.sysが提供される。その他のプロトコルについては、Windows Communication Foudation(WCF)のような技術を利用する。 -
Hypertext Transfer Protocol Stack(HTTP.sys)
HTTP/HTTPS用のProtocol Listener。下記の利点がある。- kernel-modeでキャッシング。リクエストをキャッシュし、ユーザーモードにスイッチすることなくレスポンスを返す。
- カーネルモードでリクエストをキューに保持する。リクエストはカーネルが直接正しいワーカープロセスに送られるので、コンテキストスイッチによるオーバーヘッドが少なくなる。もし利用可能なワーカープロセスがない場合、ワーカープロセスがリクエストを取得するまでキューに保持される。
- リクエストのpre-processing(前処理)とセキュリティフィルタリング
-
World Wide Web Publishing Service (WWW service)
IIS7.0以上では、WWWサービスが2つのサービスに分けられる。これら2つのサービスは同じSvchost.exe プロセスでローカルシステムとして実行される。かつ、同じバイナリーを共有する。 -
WWW Service
-
Windows Process Activation Service (WAS)
-
WWW Service
WWW Serviceはワーカープロセスを管理しない。HTTP.sysの設定を担当し、設定が更新された際にWASに伝える -
Windows Process Activation Service (WAS)
アプリケーションプールの設定とワーカープロセスを管理する。ちなみにWASはWWW Serviceなしでも稼働可能。例えばHTTPを待ち受ける必要がなければ WCF listener adapterとしてNetTcpActivatorを利用し稼働させることができる。WCFについてはこちらを参照。 -
Module in IIS
IISはユーザーが自由にコンポーネントを追加、削除できるWeb Server Engineを含んでいる。
例えばキャッシュモジュールやロギングモジュール等。 -
Request Processing in IIS
統合されたアプローチでリクエストを処理するために、IISとASP.NETはパイプラインの組み合わせを呼び出す。
新しいアーキテクチャでは特定のタスクを処理するためのnativeモジュールとmanagedモジュールで構成される。
これによりもともとはmanaged codeのみ可能だったが、全てのタイプのファイルが使用可能である。
また、この構成はIISとASP.NETの重複している機能を除去する設計となっている。例えば、クライアントがmanagedファイルをリクエストした際に、サーバは統合されたパイプラインの中で適切な認証モジュールをコールする。
前のバージョンのIISでは、IISのパイプラインとASP.NETのパイプラインでそれぞれ認証プロセスをコールしていた。 -
Application Pools in IIS
Application Poolは複数のアプリケーションがあった場合にアプリケーションが他のアプリケーションに影響されるのを防ぐためにアプリケーション単位で分けられる。Integrated ModeかClassic Modeで動作する。 -
Integrated application pool mode
IISとASP.NETの統合パイプラインでのアーキテクチャを利用可能 -
Classic application pool mode
IISとASP.NETはそれぞれ単独で動作する -
HTTP Request Processing in IIS
1.clientのブラウザーからリクエストを送信。送信されたリクエストをHTTP.sysが受け取る
2.HTTP.sysがconfiguration store から設定を取得するためにWASにコンタクトする。
3.WASはconfiguration store(applicationHost.config)からconfiguration情報をリクエストする。
4.WWW Serviceがapplication pool や サイト設定を受け取る。
5.WWW Serviceは上記の情報を利用してHTTP.sysの設定を更新する。
6.WASがワーカープロセスをスタート。
7.ワーカープロセスがリクエストを処理し、HTTP.sysにレスポンスを返す。
8.clientがレスポンスを受け取る。
個人的に意味があまりわかってない部分もありますので、意味が違う部分はご指摘おねがいします。
IIS8.5、IIS10についてはまた今度。