2009-04-09 19 views
0

1つのアプリケーションプールに10以上のアプリケーションがあります。これらすべてのアプリケーションには、一般的なdllがすべてロードされています。今のところ問題は、これらのdllが各アプリケーションの '\ bin'フォルダに置かれていることです。だから各アプリ; dll_aを使用していても、dll_aのそれ自身の 'コピー'をロードすることになります。IIS 6.0のアプリケーションプール共有DLL

私はいくつか質問があります 1)これは問題ありませんか? 2)一般的なフォルダにdll_aを入れて、すべてのアプリケーションが1つのシングルコピーを参照するようにしてください。 3.これらのアプリケーションを提供する各ワーカープロセスは、基本的に同じdllであっても、異なるパスから複数のdll_aをロードしますか?

答えて

2

1)これは問題ありませんか? - はい、これは大丈夫です。

2)一般的なフォルダにdll_aを入れて、すべてのアプリケーションで1つのコピーを参照する必要がありますか?あなたが望むなら、あなたはできます。あなたが実行する問題は、アプリケーションにdllの別のバージョンを使用させる必要がある場合、他のすべてのバージョンがアップグレード(またはダウングレード)する必要がある場合です。もし展開がdllを管理する上で問題でないなら、私はそれらに独自のsererateコピーを与える傾向があります。私はかなり自動化されたプロセスを使用しています。したがって、必要なときに同期を取っておくことは、ここではかなり簡単です。

3)これらのアプリケーションを提供する各ワーカープロセスは、基本的に同じdllであっても、異なるパスから複数のdll_aをロードしますか? - はい、各プロセスはdllのコピーにあります。それぞれのアプリケーションは独自のメモリ空間で動作します。したがって、技術的には同じものを使用していますが、それぞれがメモリ上にそのコピーを保持します。

+0

したがって、すべてが単一のdllを参照する場合。 DLLは一度メモリにロードされ、すべてのアプリケーションがそのDLLを参照します。したがって、そのDLLに静的なデータ(変数)がある場合は、すべてのアプリは同じ静的データを参照しますか? – shergill

+0

各DLLは静的データの独自のバージョンを参照しません。それぞれが使用するメモリ空間は異なります。このようなことをしたい場合は、一般的なデータにアクセスするために呼び出されるリモートアプリケーションのようなものが必要になります。 – kemiller2002

関連する問題