asp.net - 違い - integrated mode iis




IIS7の「クラシック」モードと「統合」パイプラインモードの違いは何ですか? (4)

私は昨夜ASP.NET MVCアプリケーションを導入していましたが、統合モードに設定されたIIS7で展開することはそれほど難しくないことがわかりました。 私の質問は違いは何ですか? そして、どちらか一方を使うことの意味は何ですか?


IIS 6.0およびそれ以前のバージョン:

ASP.NETは、ISAPI拡張機能、C API(Cプログラミング言語ベースのAPI)を介してIISと統合され、独自のアプリケーションと要求処理モデルを公開しています。

これにより、ネイティブのISAPIフィルタと拡張コンポーネント用と、管理対象アプリケーションコンポーネント用の2つの別々のサーバー(要求/応答)パイプラインが効果的に公開されました。 ASP.NETコンポーネントは、完全にASP.NET ISAPI拡張バブル内で実行され、IISスクリプトマップ構成でASP.NETにマップされた要求に対してのみ実行されます。

非ASP.NETコンテンツタイプへのリクエスト - 画像、テキストファイル、HTMLページ、およびスクリプトレスASPページは、IISや他のISAPI拡張で処理され、ASP.NETには表示されませんでした。

このモデルの主な制限は、ASP.NETモジュールとカスタムASP.NETアプリケーションコードによって提供されるサービスがASP.NET以外の要求で利用できないことでした

スクリプトマップとは何ですか?

スクリプトマップは、そのファイルタイプが要求されたときに実行されるISAPIハンドラとファイル拡張子を関連付けるために使用されます。 スクリプト・マップには、要求の処理を許可する前に、要求に関連付けられた物理ファイルが存在することを検証するオプションの設定もあります

良い例がseen hereseen here

IIS 7以上

IIS 7.0以降は、まったく新しいC ++ APIベースのISAPIを提供するように再設計されています。

IIS 7.0以降では、ASP.NETランタイムとWebサーバーのコア機能が統合され、モジュール(IHttpModules)と呼ばれるネイティブコンポーネントと管理コンポーネントの両方に公開される統一された(単一の)要求処理パイプラインが提供されます。

これは、IIS 7が、 NON ASP.NET Modules / native IIS modulesASP.NET modules両方で、すべての段階で要求処理を提供するコンテンツタイプに対して到着するリクエストを処理することを意味します。 これは、NON ASP.NETコンテンツタイプ( .html、静的ファイル)は.NETモジュールで処理できます。

  • すべてのアプリケーションコンテンツに対して実行可能な新しい管理対象モジュール( IHttpModule )を構築し、アプリケーションに強化された要求処理サービスを提供することができます。
  • 新しいマネージハンドラーを追加する( IHttpHandler

統合アプリケーションプールモード

アプリケーションプールが統合モードの場合、IISとASP.NETの統合された要求処理アーキテクチャを利用できます。 アプリケーションプール内のワーカープロセスが要求を受け取ると、その要求は順序付けられたイベントリストを通過します。 各イベントは、要求の一部を処理して応答を生成するために必要なネイティブモジュールと管理モジュールを呼び出します。

統合モードでアプリケーションプールを実行すると、いくつかの利点があります。 まず、IISとASP.NETの要求処理モデルが統一プロセスモデルに統合されています。 このモデルでは、IISやASP.NETで以前に複製された手順(認証など)は不要です。 さらに、統合モードでは、すべてのコンテンツタイプに対して管理対象機能を利用できるようになります。

クラシックアプリケーションプールモード

アプリケーションプールがクラシックモードの場合、IIS 7.0ではIIS 6.0ワーカープロセス分離モードと同様に要求が処理されます。 ASP.NET要求は、まずIISのネイティブ処理手順を経て、管理されたランタイムでマネージコードを処理するためにAspnet_isapi.dllにルーティングされます。 最後に、要求はIIS経由で返信され、応答が送信されます。

このIISとASP.NETの要求処理モデルの分離によって、認証や承認などの処理手順が重複しています。 さらに、フォーム認証などのマネージコード機能は、aspnet_isapi.dllによって処理されるすべての要求がマップされたスクリプトを持つASP.NETアプリケーションまたはアプリケーションでのみ使用できます。

運用環境をIIS 7.0にアップグレードし、アプリケーションを統合モードでアプリケーションプールに割り当てる前に、既存のアプリケーションの統合モードでの互換性をテストしてください。 アプリケーションが統合モードで動作しない場合は、アプリケーションをクラシックモードでアプリケーションプールに追加する必要があります。 たとえば、アプリケーションがIISから管理されたランタイムに渡された認証トークンに依存している可能性があります。また、IIS 7.0の新しいアーキテクチャにより、プロセスによってアプリケーションが中断されます。

取得元 : IIS7のDefaultAppPoolとClassic .NET AppPoolの違いは何ですか?

元のソース: IISアーキテクチャの概要


クラシックモードでは、IISはh ISAPI拡張とISAPIフィルタを直接動作させます。 ネイティブコード用とマネージコード用の2本のパイプラインを使用します。 クラシックモードでは、IIS 7.xはIIS 6と同じように機能し、IIS 7.xの機能から特別な利点を得ることはできません。

統合モードでは、クラシックモードの場合と同様に、IISとASP.Netは密接に結合されているだけで、Asp.netの2つのDLLに依存します。


クラシックモード(IIS6以降の唯一のモード)は、IISがISAPI拡張機能とISAPIフィルタで直接動作するモードです。 実際、このモードでは、ASP.NETはISAPI拡張(aspnet_isapi.dll)とISAPIフィルタ(aspnet_filter.dll)に過ぎません。 IISはASP.NETをISAPIに実装された外部プラグインとして扱い、ブラックボックスのように動作します(ASP.NETに要求を出す必要がある場合のみ)。 このモードでは、ASP.NETはPHPやIIS用の他のテクノロジとほとんど変わりません。

一方、統合モードは、IISパイプラインがASP.NET要求パイプラインと密接に統合されている(つまり同じ)IIS7の新しいモードです。 ASP.NETは、必要なすべての要求を確認し、途中で処理することができます。 ASP.NETはもはや外部プラグインとして扱われません。 これは完全にブレンドされ、IISに統合されています。 このモードでは、ASP.NET HttpModule基本的にISAPIフィルタとほぼ同等の能力を持ち、ASP.NET HttpHandlerはISAPI拡張機能と同等の機能を持つことができます。 このモードでは、ASP.NETは基本的にIISの一部です。





integrated-pipeline-mode