Когда я развертываю свой веб-сайт, я обнаружил, что могу конвертировать папку в виртуальную папку или веб-приложение, я полностью смущен этими двумя понятиями.
-
Почему существуют два разных типа?
-
Какова цель каждого?
Когда я развертываю свой веб-сайт, я обнаружил, что могу конвертировать папку в виртуальную папку или веб-приложение, я полностью смущен этими двумя понятиями.
Почему существуют два разных типа?
Какова цель каждого?
Виртуальная папка или виртуальный каталог - это просто ссылка на физическую папку где-то на сервере. Эта папка становится частью структуры веб-сайта, и вы можете использовать виртуальный каталог в части пути URL-адресов. Код, который выполняется в виртуальных каталогах, будет выполняться в том же "приложении", что и он.
Приложение, где код, который работает внутри этой "папки", имеет собственное состояние сеанса и состояние приложения. Это, по сути, новое автономное приложение, находящееся под корневым приложением.
Например, если вы хотите развернуть приложение ASP.NET на сайте с папкой приложения с именем /myapp
, тогда у этого приложения будет свой собственный домен приложения, состояние сеанса, состояние приложения полностью отделено от другого ASP.NET приложение работает в /
. Например: если вы установили значение приложения Application["Thing"] = 123
в корневое приложение, а затем сделали то же самое, но с другим значением в /myapp
, то Application["Thing"]
в корне не будет перезаписано присваиванием в /myapp
.
Еще одна вещь, которую вы можете сделать с помощью приложения - указать другой пул приложений для запуска. Например, ваше корневое приложение /
может содержать приложение ASP.NET 2.0 и запускаться в пуле, настроенном для .NET 2.0. Однако вы можете запустить приложение для блога или форума, написанное в ASP.NET 4.0. Теперь, поскольку вы не можете смешивать версии среды ASP.NET в одном пуле приложений, вы можете указать альтернативный пул приложений специально для приложений ASP.NET 4.0.
Приложения также могут вести себя как виртуальные каталоги, и вы можете указать папку приложения в физической папке в другом месте на сервере.
Если вас интересует основная механика виртуальных каталогов и приложений на IIS7, взгляните на этот ответ, который я опубликовал некоторое время назад:
Использование ServerManager для создания приложения в приложении
Чтобы добавить информационную информацию о том, что Kev очень хорошо упомянул - все виртуальные каталоги по умолчанию запускаются в заранее определенном пуле приложений с именем DefaultAppPool
. DefaultAppPool
появляется по умолчанию с IIS, когда вы включаете эту функцию в Windows. Для WebApps вы всегда можете создавать свежие/новые appPools и запускать ваш webApp внутри вашего недавно созданного appPool. Эти appPools предоставляют вам физическое/отдельное пространство процесса (в форме рабочих процессов), с помощью которого IIS может предоставлять услуги, такие как состояние сеанса, состояние приложения и т.д. В силосах, в webApp, когда он имеет свой собственный appPool. Всякий раз, когда ваш webApp appPool вылетает из строя, другие webApps (используя собственный пользовательский appPool) или виртуальные каталоги (используя DefaultAppPool
appPool) остаются полностью незатронутыми.