Архитектура IIS

Download Report

Transcript Архитектура IIS

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