我有10多個應用程序在單個應用程序池中。所有這些應用程序都有一些通用的dll,它們都會加載。現在的問題是,這些DLL被放在每個應用程序的'\ bin'文件夾中。所以每個應用程序即使它使用dll_a,也會最終加載它自己的dll_a的「副本」。IIS 6.0應用程序池共享DLL
我有幾個問題 1)這是正確的? 2)我應該把dll_a放在一些常用的文件夾中,讓所有的應用程序引用1個單一的副本? 3.服務這些應用程序的每個工作進程是否從不同路徑加載dll_a的多個副本,即使它們基本上是相同的dll?
我有10多個應用程序在單個應用程序池中。所有這些應用程序都有一些通用的dll,它們都會加載。現在的問題是,這些DLL被放在每個應用程序的'\ bin'文件夾中。所以每個應用程序即使它使用dll_a,也會最終加載它自己的dll_a的「副本」。IIS 6.0應用程序池共享DLL
我有幾個問題 1)這是正確的? 2)我應該把dll_a放在一些常用的文件夾中,讓所有的應用程序引用1個單一的副本? 3.服務這些應用程序的每個工作進程是否從不同路徑加載dll_a的多個副本,即使它們基本上是相同的dll?
1)可以嗎? - 是的,這沒關係。
2)如果我把dll_a在一些常見的文件夾中,都應用參考1個單拷貝? - 如果你想要,你可以。你會遇到的問題是,如果你需要有一個應用程序使用不同版本的DLL,所有其他人將不得不升級(或降級)。如果部署不是管理dll的問題,我會傾向於給他們自己的副本。我們有一個非常自動化的流程,可以在那裏工作,所以當他們需要的時候保持同步是非常微不足道的。
3)每個提供這些應用程序的工作進程是否從不同路徑加載dll_a的多個副本,即使它們基本上是相同的dll? - 是的,每個進程將它的副本的DLL。每個應用程序都運行在它自己的內存空間中,所以儘管技術上他們使用的是相同的,但每個應用程序都會在內存中擁有它的一個副本。
因此,如果他們都引用一個單一的DLL;然後將DLL加載到內存中,所有應用程序都會引用它。所以如果這個DLL裏有'靜態'數據(變量)那麼所有應用程序都會引用相同的靜態數 – shergill 2009-04-09 21:10:15