クラシックモードと統合モードの違い
IIS 7.0では、アプリケーション・プールには統合モードとクラシックモードの2つの実行モードがあります.
アプリケーション・プール・モードは、サーバが管理コード要求を処理する方法に影響します.
管理アプリケーションが統合モードのアプリケーションプールで実行する場合、サーバはIISとASPを使用する.NETの統合要求処理パイプは要求を処理する.
管理アプリケーションがクラシック・モードのアプリケーション・プールで実行されている場合、サーバはAspnet_を通過します.isapi.dllは、IIS 6.0でアプリケーションが実行するように要求を処理する管理コード要求をルーティングする.
クラシックモード
IIS 6またはそれ以前のバージョンと互換性を保つモードを指す.
IIS 6.0のクラシックモードでは、ASP.NETはIISに追加されたISAPIである.IIS 7.0がこのモードをサポートしているのは,後方互換性を実現するためである.しかし、古典的なモードには、多くの統合モードが提供できる特性が欠けています.古典的なモードでは、IISは独自のパイプを有し、これらのパイプはISAPI拡張を作成することによって拡張することができ、ISAPI拡張は開発が困難であることで知られている.ASP.NETはISAPI拡張として動作し,IISパイプの1つの構成部分にすぎない.
なお、この場合、ASP.NETはIISがISAPI拡張を処理する場合にのみ機能する.
ファイル拡張子を用いて,どのISAPIプロセッサを使用するかを判断できる.例えば、
さらに,IIS 6.0とIIS 7.0の古典的モードでは,いくつかの特性が繰り返される.例えば、IISは非ASPを処理することができるため、エラー処理は繰り返しの特性である.NETページ、ASP.NETは、プロセッサを
IIS 6.0では、すべてのファイルタイプをASPにマッピングできます.NETですが、このようにするにはいくつかの制限があります.最大の制限は、デフォルトドキュメントをどのように処理するかです.デフォルトドキュメントは、
クラシックモードは、
統合モード:
この新しいモデルでは、ASPをNETはIISとよりよく統合され、ASP.でNETでは、Moduleなどの機能を記述してIISの動作(拡張)を変更します.統合の利点は,ISAPIを介さずに速度と安定性を向上させることである.拡張については、IISおよび他のタイプのリクエストに対してより多くの制御を行うことができます.
統合モードでASPをNETはIISの有機的な構成部分である.現在、IISサーバの機能は40以上のモジュールに分割するので、IISとASPをNETの機能は異なる構成部分に分かれている.
なお、
IISパイプラインは20種類以上のイベントを提供し、開発者はこれらのイベントを利用してWebサーバの機能を拡張することができる.実際には、
IIS 7.0はプロファイルをいくつか修正し、Web開発者はこれらの修正内容を使用することができます.例えば、セクションは、古典的モードでも統合モードでもセクションを識別できるように変更され、同時に、セクションは
統合モードでは、HTTPモジュールとHTTPプロセッサは、中ではなく中で定義されます.統合モードでHTTPモジュールまたはHTTPプロセッサを含む
アプリケーション・プール・モードは、サーバが管理コード要求を処理する方法に影響します.
管理アプリケーションが統合モードのアプリケーションプールで実行する場合、サーバはIISとASPを使用する.NETの統合要求処理パイプは要求を処理する.
管理アプリケーションがクラシック・モードのアプリケーション・プールで実行されている場合、サーバはAspnet_を通過します.isapi.dllは、IIS 6.0でアプリケーションが実行するように要求を処理する管理コード要求をルーティングする.
クラシックモード
IIS 6またはそれ以前のバージョンと互換性を保つモードを指す.
IIS 6.0のクラシックモードでは、ASP.NETはIISに追加されたISAPIである.IIS 7.0がこのモードをサポートしているのは,後方互換性を実現するためである.しかし、古典的なモードには、多くの統合モードが提供できる特性が欠けています.古典的なモードでは、IISは独自のパイプを有し、これらのパイプはISAPI拡張を作成することによって拡張することができ、ISAPI拡張は開発が困難であることで知られている.ASP.NETはISAPI拡張として動作し,IISパイプの1つの構成部分にすぎない.
なお、この場合、ASP.NETはIISがISAPI拡張を処理する場合にのみ機能する.
ファイル拡張子を用いて,どのISAPIプロセッサを使用するかを判断できる.例えば、
.aspx
および.ascx
という拡張子を有するファイルを aspnet_isapi.dll
にマッピングすることができる.さらに、.asp
という拡張子のファイルをasp.dll
にマッピングすることで、従来のASPページを処理することができる.さらに、拡張子.php
のファイルをphp.dll
にマッピングすることで、php.dll
がインストールされていることを前提としてPHPページを処理することができる.さらに,IIS 6.0とIIS 7.0の古典的モードでは,いくつかの特性が繰り返される.例えば、IISは非ASPを処理することができるため、エラー処理は繰り返しの特性である.NETページ、ASP.NETは、プロセッサを
aspnet_isapi.dll
にマッピングしたすべてのページを処理することができる.IIS 6.0では、すべてのファイルタイプをASPにマッピングできます.NETですが、このようにするにはいくつかの制限があります.最大の制限は、デフォルトドキュメントをどのように処理するかです.デフォルトドキュメントは、
global.asax
またはHTTPモジュールでデフォルトドキュメントとして指定されている場合にのみ処理されます.いくつかのカスタム構成では、aspnet_isapi.dll
を使用してすべてのファイルタイプを処理する必要があります.IIS 7.0はこの問題を簡単に解決できる.クラシックモードは、
web.config
を変更することなく既存のWebサイトを実行することができるので、使用するWeb farmにIIS 6.0サーバとIIS 7.0サーバが含まれている場合、または何らかの理由でweb.config
ファイルを新しい構文に従ったweb.config
ファイルに変換できない場合、クラシックモードを使用することができる.統合モード:
この新しいモデルでは、ASPをNETはIISとよりよく統合され、ASP.でNETでは、Moduleなどの機能を記述してIISの動作(拡張)を変更します.統合の利点は,ISAPIを介さずに速度と安定性を向上させることである.拡張については、IISおよび他のタイプのリクエストに対してより多くの制御を行うことができます.
統合モードでASPをNETはIISの有機的な構成部分である.現在、IISサーバの機能は40以上のモジュールに分割するので、IISとASPをNETの機能は異なる構成部分に分かれている.
StaticFileModule
、BasicAuthenticationModule
、FormsAuthentication
、Session
、Profile
、RoleManager
などのモジュールは、IISパイプの構成要素である.なお、
FormsAuthentication
、Session
、Profile
、およびRoleManager
は、本来ASPである.NETの構成部分は,IISとは無関係である.IISパイプラインは20種類以上のイベントを提供し、開発者はこれらのイベントを利用してWebサーバの機能を拡張することができる.実際には、
applicationHost.config
を更新しながらカスタムモジュールを作成することで、マイクロソフト社が提供する内蔵モジュールを使用することなく、カスタムモジュールのみを使用することができます.IIS 7.0のモジュールをカスタムモジュールに置き換えることができます.クラシックモードと統合モードの構成の違い
IIS 7.0はプロファイルをいくつか修正し、Web開発者はこれらの修正内容を使用することができます.例えば、セクションは、古典的モードでも統合モードでもセクションを識別できるように変更され、同時に、セクションは
applicationHost.config
ファイルに設定してもよいし、web.config
ファイルに設定してもよい.セクションでは、静的ページも動的ページも制御できます.古典的なモードでも、セクションは重要な役割を果たし、web.config
ファイルでWeb開発者が異なるIIS構成を設定するのを支援します.統合モードでは、HTTPモジュールとHTTPプロセッサは、中ではなく中で定義されます.統合モードでHTTPモジュールまたはHTTPプロセッサを含む
web.config
ファイルを実行すると、失効します.幸いなことに、マイクロソフト社は500.22という番号のエラー情報を詳細に規定しており、このエラー情報はweb.config
ファイルを徐々に移行する方法を示しています.