-
Notifications
You must be signed in to change notification settings - Fork 0
MS_IISOperationModel
- 戻る(IIS)
- IISの動作モデル
- IIS config
- ホストヘッダー
- ISAPI、HttpPlatformHandler
IIS の 2 つの動作モデルについて。
(記載なし)
HTTP ハンドラーも HTTP モジュールも、混在させることができる。
HTTP ハンドラーも HTTP モジュールも、混在させることができる。
(厳密には、ネイティブの場合は HTTP ハンドラーも HTTP モジュールとして実装。)
移行メモ(体裁): 原典の「HTTPモジュールも、を混在させる」は
助詞が重複していたため修正した(2 箇所)。
移行メモ: 原典の「クラシックモード」節は見出しのみで本文が存在しない。
以下の補足で 2 つのモードの違いを補う。
補足(クラシック モードと統合モードの違い): この 2 つは
ASP.NET と IIS の関係が根本的に異なる。【クラシック モード】(IIS 6 以前と同じ) 要求 → IIS のパイプライン ├─ 静的ファイル → IIS が処理 └─ *.aspx → ISAPI(aspnet_isapi.dll)→ ASP.NET のパイプライン ↑ ASP.NET は「IIS にぶら下がる拡張」でしかない 【統合モード】(IIS 7 以降の既定) 要求 → 統合されたパイプライン ├─ ネイティブ モジュール(C++) └─ マネージド モジュール(.NET) ← 同じ順序の中に混在できるつまり、統合モードでは
ASP.NET のモジュールが「すべての要求」に対して効く。
クラシック モード 統合モード パイプライン 2 つ(IIS と ASP.NET が別) 1 つに統合 ASP.NET の認証・URL 書き換え .aspx等にしか効かない静的ファイルや PHP にも効く モジュールの登録先 <system.web>/<httpModules><system.webServer>/<modules>実行順序 ISAPI として最後に呼ばれる ネイティブと混在して順序制御できる 移行時の典型的な問題として、
<system.web>に書いたモジュール/ハンドラーが効かない
(統合モードでは<system.webServer>に書く必要がある)、- 起動時に HTTP エラー 500.22 / 500.23
(「統合マネージ パイプライン モードでは適用できない ASP.NET 設定」)が発生する。
応急処置としてアプリケーション プールをクラシック モードに戻せるが、
本来は構成ファイルを直すのが正しい。
IIS のワーカープロセス内で処理する。
- 静的ファイルハンドラー
- ASP.NET のハンドラー
- ASP.NET Web Forms とか MVC
- ASP.NET 5 では使用されない。
IIS のワーカープロセス外(外部のプロセス)で処理する。
- CGI ハンドラー
下位互換 - FastCGI ハンドラー
最近の IIS で PHP をホストする際に利用する。 -
HttpPlatformHandler
HTTP プロトコルでプロセス間通信する。
補足(インプロセス/アウトプロセスの意味と、ASP.NET Core での再登場): 本文の
「ASP.NET 5 では使用されない」は、
**ASP.NET Core(開発中の名称が ASP.NET 5 だった)**を指している。ASP.NET Core は Kestrel という独自の Web サーバを持ち、
IIS はその前段のリバース プロキシとして働く。
このとき、インプロセス/アウトプロセスという語が再び登場するが、
意味が本文とは少しずれるため整理しておく。
世代 インプロセス アウトプロセス ASP.NET(Framework) IIS のワーカー プロセス( w3wp.exe)内で ASP.NET ハンドラーが処理CGI / FastCGI / HttpPlatformHandler で別プロセスへ ASP.NET Core w3wp.exeの中で Kestrel が動く(InProcess。既定・高速)dotnet.exeを別に起動し、IIS が HTTP で中継(OutOfProcess)ASP.NET Core では **ASP.NET Core モジュール(ANCM)**が
この振り分けを担当しており、
本文の HttpPlatformHandler の後継にあたる。実務上の要点は、
- インプロセスの方が速い(プロセス間のホップが無い)ので既定はこちら、
- アウトプロセスは Kestrel を直接起動するため、
IIS 以外(Linux、コンテナ)と同じ挙動になり、移植性の検証に向くという点である。
(記載なし)
Tags: 移行, Windows, IIS
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。