Memory IIS 6.0应用程序池共享DLL

Memory IIS 6.0应用程序池共享DLL,memory,dll,iis-6,Memory,Dll,Iis 6,我在一个应用程序池中有10多个应用程序。所有这些应用程序都有一些它们都加载的公共DLL。现在的问题是,这些DLL被放在每个应用程序的“\bin”文件夹中。因此,每个应用程序;即使它使用dll_a,最终也会加载自己的dll_a“副本” 我有几个问题 1) 这样行吗? 2) 我是否应该将dll_a放在某个公用文件夹中,并让所有应用引用1个单一副本? 3.为这些应用提供服务的每个工作进程是否从不同的路径加载dll的多个副本,即使它们基本上是相同的dll?1)这样可以吗?--是的,这没问题 2) 我是否

我在一个应用程序池中有10多个应用程序。所有这些应用程序都有一些它们都加载的公共DLL。现在的问题是,这些DLL被放在每个应用程序的“\bin”文件夹中。因此,每个应用程序;即使它使用dll_a,最终也会加载自己的dll_a“副本”

我有几个问题 1) 这样行吗? 2) 我是否应该将dll_a放在某个公用文件夹中,并让所有应用引用1个单一副本? 3.为这些应用提供服务的每个工作进程是否从不同的路径加载dll的多个副本,即使它们基本上是相同的dll?

1)这样可以吗?--是的,这没问题

2) 我是否应该将dll_a放在某个公用文件夹中,并让所有应用引用1个单一副本?--如果你愿意,你可以。您将遇到的问题是,如果您需要一个应用程序使用不同版本的dll,所有其他应用程序都必须升级(或降级)。如果部署不是管理DLL的问题,我倾向于为它们提供自己的serrate拷贝。我们有一个相当自动化的流程,我在这里工作,所以在需要的时候保持同步是非常简单的


3) 为这些应用提供服务的每个工作进程是否从不同路径加载dll_a的多个副本,即使它们基本上是相同的dll?--是的,每个进程都有一个dll副本。每个应用程序都在它自己的内存空间中运行,所以尽管从技术上讲它们使用的是同一个应用程序,但每个应用程序的内存中都会有一个副本

所以如果它们都引用一个dll;然后将DLL加载到内存中一次,所有应用程序都引用它。因此,如果DLL中有“静态”数据(变量);那么所有的应用程序都会引用相同的静态数据吗?不,每个dll都会引用自己版本的静态数据。每个使用的内存空间是不同的。如果您想做这样的事情,您将需要一个远程应用程序,它可以全部调用来访问公共数据。