2011-08-16 9 views
1

私はここで少し混乱しています。 IIS 5.0では、すべてのASP.NETアプリケーションが同じワーカープロセス(aspnet_wp.exe)内で実行されます。さまざまなアプリケーションは、appdomainによって隔離されています。私は、appdomainの基本的な機能は、プロセス内でアプリケーションの分離を提供することだと考えています。今度はIIS 6.0へ。私はIIS 6でアプリケーションプールについて読んだことがあります。多くのサイトでは、IIS 5.0ではアプリケーションに問題があると、他のアプリケーションに影響を与えると言います。しかし、それはappdomainsによって保護されていませんか?私は、IIS 6.0のアプリケーションプールがそのような事態を防止すると言われています。私はここでは、アプリケーションプールがIIS 5.0で提供する利点が何であるかについて、ここで少し混乱しています。また、IIS 6のワーカープロセス分離モードでは、異なるアプリケーションプール(したがって異なるワーカープロセス)を構成することは、実行するのに妥当なことであると言われています。しかし、新しいプロセスを生み出すことはメモリの利用効率を高め、どのようにして物事を実行するための効果的な方法であると主張することができますか?また、HTTP.SYSは、関連するアプリケーションpooolに要求をルーティングする方法を知っていますか?IIS 5.0 - Appdomain

答えて

0

アプリケーションプールとAppDomainsを混同しないでください。 AppDomainは、プロセス内の分離境界です。これらは、実行中のマネージコードを隔離し、セキュリティを提供するように設計されています。

アプリケーションプールは、プールが複数のサイトの要求を処理できるIISの機能です。彼らはワーカープロセス(aspnet_wp.exeまたはw3wp.exe)に複数のAppDomainインスタンスを実行することでこれを処理します。技術的にはサイトごとに複数のAppDomainインスタンスを実行できますが、通常はIISアプリケーションごとに単一のAppDomainです。

単一のアプリケーションプールに複数のサイトがあり(これがワーカープロセスを共有する場合)、これらのサイトの1つが多くのリソースを消費し始めると、同じアプリケーションプールで実行されている他のサイトに直接影響します。

サイトを論理グループ(アプリケーションプール)にグループ化(および分離)することで、サイトの動作をより適切に管理できます。

HTTP.SYSは、Windowsサブシステムの一部であるカーネルモードドライバスタックです。これは、カーネルモード(IIS6より前のバージョンではユーザーモードでwinsockを使用)でHTTPプロトコルの管理を提供します。 HTTP.SYSをカーネルレベルで実行すると、ワーカープロセスが失敗した場合、その要求をキューに入れてから、新しいワーカープロセスに転送してスピンアップさせます。

IIS6でサイトを作成すると、そのサイトがHTTP.SYSで登録されます。このサイトは、適切なワーカープロセスに入ってくるリクエストをルーティングできます。

+0

その説明をありがとう –

0

Appdomainはデータの共有についてです。 http://msdn.microsoft.com/en-us/library/system.appdomain.aspx とIIS 6では、複数のアプリケーションをアプリケーションプールに追加できます。同じアプリケーションプールに2つのアプリケーションがあり、そのうちの1つがクラッシュし続けると、他のアプリケーションに影響を与え、IISは不安定性のためにアプリケーションプール全体をシャットダウンすることになります。

したがって、重要なアプリケーションをお持ちの場合は、アプリケーションプール内に保持することをお勧めします。あなたがIISで複数のアプリを持っている場合、ルートhostheaders(または余分な外部IIPアドレス)とのリクエスト

各生産ウェブサイト用のアプリケーションプールを推奨しています余分なリソース:http://forums.iis.net/t/1151476.aspx

違いを説明して素敵なリソース5.0と6.0の間の分離: http://www.tech-faq.com/understanding-iis-5-and-iis-6.html