我有几个asp.net的web应用程序一些运行asp.net 1.1一些运行在2.0和一些3.5在过去这一切运行在Windows 2003与iis6和我为每个网站的应用程序池。 过了一段时间,我在网上读了一个地方,最好在每个版本的.net框架中使用一个应用程序池,这样所有的2.0应用程序都可以在一个应用程序池上运行,并且所有的3.5应用程序都可以自己运行,等等。
现在我正在使用iis7.5迁移到windows 2008 r2,没有1.1或3.5,因此应用程序池只有2.0选项。 框架版本仍然是最好的分离web应用程序? 还是不是每个应用程序池都有自己的框架实例?
实际上.net 2.0和.net 3.5实际上运行并使用了相同版本的ASP.NET(以及CLR),所以无论何时你想运行.net 3.0或3.5,你都应该select2.0版本。
现在就应用程序隔离而言,第一件事情就是你需要为每个版本的CLR / asp.net分别设置应用程序,这意味着4.0和2.0必须分开,然而2.0,3.0和3.5可以愉快地生活在同一个AppPool中。
就最佳实践而言,这取决于您所承载的应用程序的负载和types以及其他许多标准,但我真的会使用AppPool隔离,尤其是:
您可以决定在同一个应用程序池中托pipe多个应用程序的一个原因是,如果所有这些应用程序共享重要的代码块,例如,如果您托pipe的是一个大的CMS应用程序,并且将运行20个不同的实例,则使用相同的进程系统可以做更好的工作来共享内存和其他资源,这将使他们更有效率。
不过我认为,除非你承载了大量的站点(我的意思是> = 500),那么我会build议隔离他们自己的应用程序池中的每个站点,特别是如果他们不会在中等信任或其他框架如PHP, ASP,ISAPI等,因为这些提供了太多的权力,可能做不应该被允许的事情(如阅读其他网站configuration,或内存)。