web-dev-qa-db-ja.com

アプリケーションドメインとアプリケーションプールの違いは?

アプリケーションドメインとアプリケーションプールの違いは何ですか?

私はこれらの2つの用語に関する多くの記事を読みました。しかし、それでもそれらについて適切な理解を得ることができません。

簡単な説明で詳しく説明してください。

ありがとう

21
Amit Soni

IISプロセスはw3wpです。 IISのすべてのアプリケーションプールは独自のプロセスを使用します。AppPool1はプロセス3784を使用し、AppPool2はプロセス5044を使用します。Asp.netの異なるアプリケーションは異なるAppDomainを使用します。

AppTest1とAppTest2は異なるAppDomainにありますが、プロセスは同じです。

それらを使用するポイントは何ですか?

アプリケーションプールとAppDomainは、どちらも分離を提供できますが、異なるアプローチを使用します。アプリケーションプールは、プロセスを使用して、.NETなしで動作するアプリケーションを分離します。ただし、AppDomainは、.NETによって提供される別の分離方法です。サーバーが数千のWebサイトをホストしている場合、実行中のプロセスが多すぎるとOSが強制終了されるため、数千のアプリケーションプールを使用してWebサイトを分離することはありません。ただし、アプリケーションプールが必要になる場合があります。アプリケーションプールの利点の1つは、アプリケーションプールのIDを構成できることです。また、アプリケーションプールをリサイクルするためのより柔軟なオプションがあります。少なくとも現時点では、IISは、appdomainをリサイクルするための明示的なオプションを提供していませんでした。

アプリケーションプールは、さまざまなWebアプリケーションおよびWebサイトの1つ以上のURLのグループです。任意のWebディレクトリまたは仮想ディレクトリをアプリケーションプールに割り当てることができます。アプリケーションプール内のすべてのアプリケーションは、同じワーカープロセス実行可能ファイルW3wp.exeを共有します。1つのアプリケーションプールにサービスを提供するワーカープロセスは、別のサービスにサービスを提供するワーカープロセスから分離されます(MS Wordを起動して多数のWordドキュメントを開くのと同様)。個別の各ワーカープロセスはプロセス境界を提供するため、アプリケーションが1つのアプリケーションプールに割り当てられたときに、他のアプリケーションプールの問題がアプリケーションに影響を与えることはありません。これにより、ワーカープロセスに障害が発生しても、他のアプリケーションプールで実行されているアプリケーションに影響を与えないことが保証されます。 [i.e]たとえば、Word文書に問題がある場合、Excelシートに論理的に影響するべきではありません。アプリケーションドメインは、実行されたソフトウェアアプリケーションを互いに分離して互いに影響を与えないようにするために使用されるメカニズム(オペレーティングシステムのプロセスに似ています)です。 [i.e] MS Wordを開いてもMS Excelには影響しません。アプリケーション間に依存関係がないため、いつでも両方のアプリケーションを開いたり閉じたりできます。各アプリケーションドメインには独自の仮想アドレススペースがあり、そのアドレススペースを使用してアプリケーションドメインのリソースのスコープを設定します。

おかげで this リンク

30
Amit Soni