LoginSignup
0
0

More than 5 years have passed since last update.

IIS7以上で新しくなった部分のアーキテクチャ紹介

Last updated at Posted at 2016-04-07

概要

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についてはまた今度。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0