8

ASP.NET 3.5(IIS6を使用)では、AppDomainはすべての要求に対して作成されますか?すべてのアプリケーションがw3wp.exeの下に独自のAppDomainを持っていることは知っていますが、AppDomain全体はどのように正確に機能しますか?

私は今日、ASP.NETアプリケーションに静的オブジェクト(またはシングルトンクラス)がある場合、このオブジェクトがすべての要求間で共有されることを私に納得させようとしている同僚と議論していました。これは誤りだと思います。私は正しいですか?どうすれば同僚を説得できますか?

ありがとう!

4

2 に答える 2

9

あなたの同僚が正しいと言って申し訳ありません。ASP.NETアプリケーション内では、IISでそのように構成された各アプリケーションは、シングルトンオブジェクトのスコープである独自のAppDomain内で実行されます。したがって、App1のシングルトンはApp1へのすべてのリクエストで使用できます(注意深く処理しないと同時実行になる可能性があります)が、App2のリクエストはApp1のシングルトンにアクセスできません。

HTTPパイプラインでのスレッド化とプーリング
(ソース:microsoft.com

MSDN Magazineのこの図は、各アプリケーションが独自のAppDomainでどのように分離されているかを示すのに役立ちます。この図はIIS5ワーカープロセス(aspnet_wp.exe)を示していますが、IIS6ワーカープロセスは、同じアプリケーションプールで実行するように構成されたアプリケーションでも同様です。

于 2009-01-17T05:56:09.220 に答える
1

シングルトンは、appdomainのスコープ全体に存在します。また、アプリケーションへのすべてのリクエストは同じappdomainに送信されるため、同僚は実際に正しいです。

更新:好奇心に駆り立てられた質問で、リクエストごとに使用できる「シングルトン」を見つけました。しかし、実際にはお勧めしません。リクエストごとのシングルトンが必要な場合は、より適切なパターンを見つける必要があります。

于 2009-01-17T05:48:17.287 に答える