Как пул приложений реализован в IIS?
- Является ли каждый пул приложений эквивалентным .Net AppDomain?
- Или это эквивалентно процессу .Net?
- Как пул приложений связан с IIS w3wp.exe?
Как пул приложений реализован в IIS?
1. Является ли каждый пул приложений эквивалентным .Net AppDomain?
Нет, в пуле приложений может быть несколько AppDomains. Каждый AppDomain представляет одноразовое приложение ASP.NET. Многие приложения ASP.NET могут принадлежать одному пулу приложений.
2. Или это эквивалентно процессу .Net?
Не совсем. См. Ниже.
3. Как пул приложений связан с IIS w3wp.exe?
Пул приложений представляет собой ограниченное число рабочих процессов, в которых может размещаться потенциально большее число приложений. Это похоже на то, как пул соединений SQL имеет ограниченное количество подключений между произвольным количеством запросов.
По умолчанию пул приложений получает один рабочий процесс (w3wp.exe
), и обычно лучше оставить этот параметр самостоятельно, если вы не знаете, что делаете. Тем не менее, пул приложений можно настроить для использования любого количества процессов.
Рабочий процесс на самом деле является ресурсом, который объединяется здесь, а не с AppDomain. Всегда будет одинаковое количество AppDomains, так как есть приложения ASP.NET(если только он не находится в середине закрытия или приложение не создает собственные AppDomains), но количество рабочих процессов является независимым; пул приложений дает вам определенное количество рабочих процессов для обработки запросов для определенного количества AppDomains.
Параметр 1 (по умолчанию) для числа рабочих процессов в пуле приложений означает, что все приложения/приложения в пуле имеют один и тот же рабочий процесс.
Это упрощение, чтобы сказать это таким образом, но лучший способ подумать об этом - это то, что AppPool - это пул AppDomains. Все эти AppDomains выполняются в рамках одного рабочего процесса (w3wp.exe
).
Еще одна важная вещь - Application Security
.
В предыдущих версиях IIS рабочие процессы выполнялись как LocalSystem, мощная учетная запись с правами системного администратора на сервере. Поскольку LocalSystem имеет доступ практически ко всем ресурсам в операционной системе, это приводит к последствиям безопасности. В IIS 6.0 (пул приложений) можно установить идентификатор рабочего процесса на уровне пула приложений. Идентификатор пула приложений - это учетная запись, в которой работает рабочий процесс пула приложений. По умолчанию пулы приложений работают под учетной записью NetworkService, которая имеет права пользователя на низкий уровень.
Запустив рабочий процесс с использованием очень низкой привилегированной учетной записи, такой как NetworkService, можно уменьшить уязвимость безопасности. Однако, используя диспетчер IIS, можно настроить пул приложений для запуска как любой из следующих предопределенных учетных записей:
NetworkService
LocalSystem
LocalService
Я знаю, что это старый пост, но я думаю, что это хороший акцент:
1 пул приложений (IIS) = 1 очередь запросов (в HTTP.SYS) + 1 или более экземпляров w3wp.exe.