проф. В.К.Толстых, Технологии разработки Internet- приложений Архитектура IIS 5, IIS 6, исполняющая среда ASP.NET в IIS 7, конфигурирование IIS 7 исполняющая среда ASP.NET в IIS 7, конфигурирование IIS 7 исполняющая среда ASP.NET в IIS 7, конфигурирование IIS 7 Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета
Модель адреса в IIS В IIS была введена общая модель адреса: Узлы – объединяют Web-ресурсы для администрирования, т.е. – сайты. Привязаны к сетевому адресу и порту, например, Приложения – расширения сервера с уникальными именами, посредством которых можно управлять приложениями (размещать в пуле, запускать, останавливать…). В каждом узле м. б. несколько приложений, например, Виртуальные каталоги – папки, отображаемые на сетевое пространство узлов IIS, находящиеся в каких-нибудь местах файловой системы. Каждый виртуальный каталог связывается с одним приложением.
Возможности базовых служб IIS IIS 5 : 1.Web, FTP, SMTP, NNTP – процесс Inetinfo.exe. 2.вне процесса IIS (изолированные процессы) – Dllhost.exe – наивысшая защита IIS 5 от Web-приложений. IIS 6 : 1.Web-служба – Svchost.exe запускает и контролирует рабочие процессы (РП – w3wp.exe ). Каждая копия РП работает с заданным для него пулом приложений (группа приложений, обрабатываемых одним РП). По умолчанию все приложения объединяются в пуле DefaultAppPool. РП обслуживает любые приложения Web-сервера и запускается при получении сетевого запроса от драйвера ядра операционной системы http.sys. Идея пулов позволяет IIS размещать на одном сервере тысячи разнообразных приложений, не держа тысячи РП заранее запущенными. РП каждого пула не может получить доступ к приложениям другого пула. Каждая копия РП занимает в ОЗУ 5 Мбайт. 2.Службы FTP, SMTP, NNTP – Inetinfo.exe (в режиме IIS 5), также управляет метабазой IIS Web-сад – это пул с несколькими рабочими процессами. http.sys распределяет запросы в саду (между копиями РП в пуле), если один рабочий процесс замедляется (например, длительный запрос к серверу баз данных или запрос к внешним службам), прием и обработка запросов продолжается остальными рабочими процессами. Рабочие процессы на многопроцессорных компьютерах можно привязать к конкретным процессорам и распараллеливать вычисления. IIS 7 IIS 7 : Модульная архитектуры на основе IIS 6 (нужные ASP.NET-модули выбираются или создаются и встраиваются в конвейер обработки запросов). Усилена безопасность (отдельные пулы для сайтов, олицетворение…). Поддерживаются дополнительные, не только HTTP, протоколы транспорта посредством WAS (Windows process Activation Service).
AppDomain 2 Исполняющая среда ASP.NET в IIS 5 IIS 5 - Inetinfo.exe, DLLHost.exe Расширение ISAPI aspnet_isapi.dll Расширение ISAPI asp.dll ASP ASP.NET Рабочий процесс aspnet_wp.exe Ответ HTML Конвейер HTTP Ответ HTML … Домены приложений - AppDomain Рабочий процесс (РП) обслуживает любые приложения, которые могут выполняться на данном Web-сервере при первом обращении к приложению создаёт домен приложения AppDomain (виртуальный каталог приложения с его.dll- сборками), среда aspnet_isapi.dll загружает туда все сборки и передаёт управление HTTP-конвейеру, генерирующему выходной HTML-поток. HTML Ответ HTML Браузер (запрос HTTP) AppDomain 1 Конвейер HTTP Ответ HTML
CLR AppDomain Конвейер HTTP HTML Исполняющая среда ASP.NET в IIS 6 Драйвер http.sys (стек протокола HTTP) Расширение ISAPI aspnet_isapi.dll Ответ HTML Приложения каждого пула изолированы друг от друга. Получив запрос от http.sys, расширение aspnet_isapi.dll загружает РП в заданном пуле (очередной РП или несколько РП если это Web-сад), который активирует CLR, создаёт домен приложения AppDomain с HTTP-конвейером, где размещаются.dll сборки приложения. Ответ HTML Расширение ISAPI asp.dll Inetinfo.exe - IIS admin Service (читает кол-во зарегистрированных пулов, метабазу и даёт указания http.sys о создании соответствующих пулов) Метабаза XML (БД настроек IIS) ASP.NET Браузер (запрос HTTP) … Пул приложений (Web-сад с несколькими РП) Рабочий процесс w3wp.exe Рабочий процесс w3wp.exe Сборки.dll … Уровень режима ядра ОС Драйвер помещает в очередь и разбирает HTTP-запросы, а также кэширует и возвращает HTML-ответы. Уровень пользовательского режима Svchost.exe – ядро сервера (Настройка http.sys, запуск РП, контроль работоспособности…) ASP
Фильтры ISAPI (Internet Server Application Programming Interface) Фильтры представляют собой тип приложения ISAPI, вызываемый при каждом запросе IIS, поэтому они отвечают на события внутри IIS. ISAPI-фильтры (каждый – в отдельной *.dll) не могут самостоятельно выполняться подобно ISAPI-расширениям. Фильтры загружаются при запуске IIS, согласно данным метабазы. HTTP-транзакция между браузером клиента и IIS вызывает несколько серверных событий. При возникновении события, для которого зарегистрирован ISAPI-фильтр, входной или выходной HTTP-поток передаётся на этот фильтр. Фильтры анализируют и при необходимости вносят свои коррективы в текст HTTP- потока и возвращают его обратно IIS. Фильтры работают в одном адресном пространстве с IIS, что обеспечивает им высокую скорость работы. Они могут устанавливаться как для всего IIS, так и для отдельных его сайтов. Возможность анализировать и при необходимости модифицировать входящие и исходящие потоки данных делает фильтры ISAPI очень гибким и мощным механизмом. Однако, при неумелом программировании они могут существенно снизить производительность IIS. Фильтры, обычно, используют для: 1.аутентификации клиентов 2.анализа и протоколирование запросов на основе заголовков HTTP 3.перенаправления запросов на основе заголовков HTTP 4.шифрования