ASP.NET и изоляция приложений - PullRequest
1 голос
/ 19 мая 2010

При использовании IIS 6 происходит ли изоляция приложений на основе пула приложений? Если так, что произойдет, если в одном пуле приложений будет несколько виртуальных каталогов? Все ли они используют одну и ту же память, и если происходит сбой одного Виртуального каталога, все другие приложения также аварийно завершают работу?

Ответы [ 2 ]

2 голосов
/ 19 мая 2010

В случае сбоя функциональности в одном виртуальном каталоге да, это может привести к сбою или нанести вред другим приложениям в том же пуле приложений, в том числе в других виртуальных каталогах . Защитите свои приложения, поместив их в отдельные пулы приложений.

Виртуальные каталоги не сами по себе не разделяют память или ресурсы. Это имеет и другие последствия. Например, на ваши статические переменные в одном приложении может влиять установка статических переменных в другом приложении в том же пуле приложений.

В IIS 6 цель пула приложений довольно проста: разделить приложения так, чтобы один сбой не сбивал остальные. В IIS 7 это по-прежнему основная цель, но в этом есть немного больше .

Редактировать : Для пояснения: каждый пул приложений - это собственный «рабочий процесс», и один сбой не повредит другим пулам приложений. Каждый виртуальный каталог - это просто: способ заставить IIS действовать так, как если бы в этом месте был каталог. Когда вы создаете виртуальный каталог с тем же именем и местоположением, что и папка, на которую он указывает, по умолчанию это на самом деле ничего не делает . Вы можете использовать виртуальные каталоги по разным причинам, помимо того, что URL-адреса должны быть такими, как вы хотите: Вы можете использовать их для безопасности. И вы можете использовать их для размещения вызовов в определенных пулах приложений, как мы уже обсуждали.

Люди часто приравнивают виртуальные каталоги к веб-приложениям, потому что это обычно , где вы хотите использовать возможности настройки виртуальных каталогов - для веб-приложения.

Состояние сеанса поддерживается только внутри веб-приложения, а не среди всех веб-приложений в пуле приложений. Чтобы хранить значения, используемые разными веб-приложениями, вам нужно сделать что-то еще. Кэш ASP.NET, файлы cookie, базы данных и т. Д. Размещение разных папок в приложении в виде разных виртуальных каталогов и отдельных пулов приложений приведет к их разным процессам и разрушению общего состояния сеанса.

1 голос
/ 19 мая 2010

Разные виртуальные каталоги могут иметь разные пулы приложений. Если они совместно используют один и тот же пул приложений и взрываются, то происходит сбой всего приложения. Если для виртуальных каталогов настроены разные пулы приложений, то они изолированы.

Имейте в виду, что настройка различных пулов приложений для ваших виртуальных каталогов имеет другие последствия, такие как отсутствие возможности совместного использования в состоянии сеанса памяти. В этом случае вы должны использовать внешнее хранилище.

...