У меня есть несколько веб-приложений asp.net, некоторые из которых работают под asp.net 1.1, некоторые из них работают на 2.0, а некоторые на 3.5 в прошлом, все это работало на Windows 2003 с iis6, и я сделал для каждого сайта пул приложений. через некоторое время я где-то прочитал в Интернете, что лучше использовать пул приложений для каждой версии инфраструктуры .net, чтобы все приложения 2.0 работали в одном пуле приложений, а все 3.5 работали сами по себе, и так далее.
Теперь я перехожу на Windows 2008 R2 с iis7.5, а версии 1.1 или 3.5 нет, поэтому пулы приложений имеют только вариант 2.0. было бы лучше разделить веб-приложения по версии фреймворка? или не в том, что каждый пул приложений имеет свой собственный экземпляр фреймворка?
На самом деле .net 2.0 и .net 3.5 фактически запускали и использовали одну и ту же версию ASP.NET (и CLR в этом отношении), поэтому на самом деле всякий раз, когда вы хотите запустить .net 3.0 или 3.5, вы должны выбрать версию 2.0.
Теперь, с точки зрения изоляции пула приложений, первое, что вам нужно будет иметь отдельные пулы приложений для каждой версии CLR / asp.net, это означает, что 4.0 и 2.0 должны быть разделены, однако 2.0, 3.0 и 3.5 могут жить счастливо. в том же AppPool.
С точки зрения передовой практики это действительно зависит от нагрузки и типов приложений, которые вы размещаете, и многих других критериев, но я бы действительно использовал AppPool Isolation, особенно для:
Одна из причин, по которой вы можете решить разместить несколько приложений в одном пуле приложений, заключается в том, что все они совместно используют значительные фрагменты кода, например, если вы размещаете большое приложение CMS и у вас будет запущено 20 разных экземпляров, используя один и тот же процесс, -system может намного лучше распределять память и другие ресурсы, что сделает их немного более эффективными.
Однако я думаю, что если вы не размещаете большое количество сайтов (я имею в виду> = 500), я бы рекомендовал изолировать каждый сайт в своем собственном пуле приложений, особенно если они не будут работать в Medium Trust или других фреймворках, таких как PHP, ASP, ISAPI и т. Д., Поскольку они предоставляют слишком много возможностей для потенциально недопустимых действий (таких как чтение конфигурации других сайтов или памяти).