Проф. В.К.Толстых, www.tolstykh.com Технологии разработки Internet- приложений ASP.NET приложения – ASP.NET-процесс, пул, домен приложения, компиляция,

Презентация:



Advertisements
Похожие презентации
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – Модули HTTP, фильтры, события приложения - Global.asax.
Advertisements

Проф. В.К.Толстых, Технологии разработки Internet- приложений Архитектура IIS 5, IIS 6, исполняющая среда ASP.NET в IIS 7, конфигурирование.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – компиляция Из цикла лекций «Технологии разработки Internet-приложений»
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – директивы Из цикла лекций «Технологии разработки Internet-приложений»
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – оптимизация скорости работы приложений Из цикла лекций.
ДонНУ, кафедра КТ, проф.В.К.Толстых Web-службы (Web-сервисы) введение введение Разработка в среде Delphi Из цикла лекций «Internet-технологии разработки.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Администрирование IIS 5, 6 сайт, виртуальный каталог, приложение, пул, рабочий.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – обработка ошибок страниц и приложения, Global.aspx.
Проф. В.К.Толстых, Пример Web-службы Калькулятор с валидацией Из цикла лекций «Internet-технологии разработки приложений» для студентов.
Тренинг «Разработка веб-приложений на ASP.NET» Занятие 2 Страницы и элементы управления Гайдар Магдануров
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET примеры: HtmlControls Из цикла лекций «Технологии разработки Internet-приложений»
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET примеры: обработка данных форм. работа с формами работа с формами.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – локализация ресурсов приложения Из цикла лекций «Технологии.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Delphi for.NET примеры: работа с файлами Из цикла лекций «Технологии разработки.
ДонНУ, кафедра КТ, проф.В.К.Толстых WCF-службы Создание и тестирование.dll-библиотеки WCF-служб Из цикла лекций «Internet-технологии разработки приложений»
Проф. В.К.Толстых, Технологии разработки Internet- приложений Эталонные страницы – Master pages Из цикла лекций «Технологии разработки.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – пользовательские элементы управления Из цикла лекций.
ДонНУ, кафедра КТ, проф.В.К.Толстых Технологии разработки Internet- приложений ASP.NET приложения: Безопасность – аутентификация Из цикла лекций «Технологии.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET примеры: динамические таблицы, привязка данных к выпадающему списку.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Архитектура и администрирование IIS 7 исполняющая среда ASP.NET в IIS 7,
Транксрипт:

проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – ASP.NET-процесс, пул, домен приложения, компиляция, конвейер HTTP Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета

Терминология Рабочий процесс (РП) – w3wp.exe обслуживает любые приложения, которые могут выполняться на данном Web- сервере. РП ничего не знает об ASP.NET. РП загружает CLR и запускает конвейер HTTP посредством создания экземпляра HttpRuntime (выполнение HTTP-запроса) для приложения. AppPool (пул приложений) – это группа приложений, для выполнения которых используется одна и та же копия РП и запрещается доступ от других РП. Все запросы к приложениям в пуле ставятся в одну очередь этого пула. AppDomain приложения – виртуальная папка в которой готовятся ответы клиенту на запросы каких-либо ресурсов данного приложения. Использование такой модели позволяет разграничить память, выделяемую каждому приложению. В рамках одного домена приложения совместно используются, находящиеся в памяти глобаль- ные данные приложения (Application, Session, Cache...). Непосредственно виртуальная папка домена приложения содержит классы приложения в виде откомпилированных.dll- сборок, готовых обрабатывать запросы клиентов. Невозможно выгрузить сборку не выгрузив весь домен. Каждая перекомпиляция проекта (или пересохранение файлов Global.asax, web.config ) не удаляет старые сборки проекта в его домене, а создаёт новые копии. Только после 15 перекомпиляций удаляется весь домен со сборками и создаётся новый домен с новым идентификатором. Управление доменами осуществляется через ApplicationManager. Application – приложение, экземпляр класса HttpApplication, который создаётся вместе со своим доменом AppDomain при первом обращении к каким-либо ресурсам приложения и формируется на базе классов в сборках своего AppDomain. Если готовых сборок нет, то HTTP-конвейер, создаёт требуемые сборки. События, формирующие Application, задаются в файле Global.asax. HTTP-конвейер превращает запрос клиента в экземпляр класса CLR запрошенного ресурса, который затем генерирует ответ клиенту в виде HTML-разметки для Web-браузера и XML-разметки для Web-сервиса. HttpRuntime обеспечивает поддержку исполнения текущего ASP.NET приложения: формирование HTTP- контекста из запроса, инициализация КЭШ и монитора изменений файлов приложения, вызов метода ProcessRequest для запуска в CLR полученного обработчика запроса.

Информация о домене приложения После 15 перекомпиляций – Новый домен с новым идентификатором

Модель процесса ASP.NET HttpRuntime (выполнение HTTPзапроса) HTTP-контекстКЭШ ASP.NET HttpApplicationFactory – выбирает или создаёт объект HttpApplication в соответствующем AppDomain Конвейер HTTP: AppDomain HttpApplication – определяет тип запроса (.aspx,.asmx,.ashx ) и вызывает соотв. фабрику обработчиков PageHandlerFactory – выбирает сборки из AppDomain или создаёт класс страницы из исходников. Компиляция страницы сборка класса..dll сборка класса C# исходники класса ASP.имя_класса – сформированный класс обработчика запроса в виде.dll -сборки для CLR IHttpHandler – интерфейс этого обработчика HttpRuntime вызывает метод ProcessRequest объекта ASP.имя_класса, что заставляет его генерировать ответ клиенту Точка выполнения запроса HTTP modules – фильтры, модификаторы запроса с интерфейсом IHttpModule HTML Default.aspx Точка входа в конвейер

Задача конвейера HTTP – найти в нужном домене приложения управляемый класс (.NET класс разработчика), который необходим для реализации текущего запроса. Например, если был запрошен файл Default.aspx с атрибутом ClassName = _Default, то в AppDomain данного приложения будет отыскиваться класс ASP._Default. Если такой класс имеется, то будет создан его экземпляр в CLR – обработчик запроса с интерфейсом IHttpHandler и вызван его метод ProcessRequest, который сгенерирует ответ клиенту. Если необходимый управляемый класс в AppDomain приложения отсутствует, или он устарел, то класс динамически создаётся фабрикой обработчиков ( …HandlerFactory ). Компонент конвейера HTTP : HttpApplicationFactory – это фабрика создания приложений и поддержки пула приложений. HttpApplicationFactory выясняет имеется ли уже для виртуальной папки сайта, к которой обращён запрос, необходимый AppDomain. Если – да, т. е. приложение уже выполняется, то HttpApplicationFactory выбирает из пула соответствующее приложение и передаёт ему запрос. В противном случае создаётся новый объект HttpApplicationFactory со своим AppDomain и ему передаётся запрос.

Компонент конвейера HTTP : HttpApplication – это приложение ASP.NET, – динамически создаваемый экземпляр класса HttpApplication. HttpApplication определяет тип запроса (страница ASP.NET – файл.aspx, Web-сервис – файл.asmx, пользовательский обработчик – файл.ashx ) и привлекает соответствующую фабрику для создания обработчика запроса. Компонент конвейера HTTP : HTTP modules – это классы, реализующие интерфейс IHttpModule и обрабатывающие события времени выполнения (Runtime). HTTP-модули позволяют выполнять различные действия на любом этапе жизненного цикла страницы или приложения. В HTTP-модуле можно подписаться на любое событие жизненного цикла и обрабатывать его, реализуя при этом какую-то свою логику. Обычно, модули используют как фильтры приложения. Каждый модуль запускается методом Init. В этом методе каждый HTTP-модуль подписывается на события жизненного цикла приложения ( BeginRequest, AuthenticateRequest … – всего 26). После этих действий все загруженные модули HTTP остаются в памяти и выгружаются только тогда, когда выгружается домен приложения.

Компонент конвейера HTTP : …HandlerFactory – это фабрики создания обработчиков HTTP-запросов. Обязанности фабрики – либо найти.dll -сборку в AppDomain, где содержится класс запрошенного ресурса, либо – динамически создать эту сборку по требованию. Исходный код C# генерируется путём сканирования частичных классов запрашиваемого ресурса (.aspx,.asmx,.ashx ) и временно сохраняется в папке %SystemRoot%\Microsoft.NET\Framework\версия \Temporary ASP.NET Files\папка_приложения (если не имеет атрибут debug=true, то эти файлы удаляются сразу после обработки запроса). Далее сформированный класс компилируется. Полученная сборка фиксируется в AppDomain (кэшируется во временной папке рядом с папкой приложения) и в виде обработчика запроса загружается в память где работает CLR. Например: PageHandlerFactory – фабрика создания обработчиков для страниц ASP.NET (.aspx ), WebServiceHandlerFactory – фабрика создания обработчиков для Web-сервисов (.asmx ), и т. д. Необходимая фабрика определяется объектом HttpApplication, а связь фабрики с типом ресурсов задаётся в файлах machine.config и корневом web.config в узле. Компонент конвейера HTTP : IHttpHandler – это обработчик HTTP-запроса с интерфейсом IHttpHandler, созданный какой-либо предыдущей фабрикой. Например, при запросе страницы Default.aspx с атрибутом ClassName=_Default.dll- сборка обработчика в CLR будет представлять объект ASP._Default, являющийся экземпляром класса System.Web.UI.Page.

Приложение в конвейере HTTP с событиями Главная точка входа в HTTP-конвейер – это модуль HttpRuntime каждого ASP.NET приложения. Домен приложения HttpRuntime HttpApplication обрабатываемое приложение HttpContext HttpRequest HttpResponse HttpSessionState HttpApplicationState Они доступны через классы Page и Context IHttpModule, Global.asax модули предварительной обработки (BeginRequest…) IHttpHandler главный обработчик, порожденный классом Page из.aspx IHttpModule, Global.asax модули заключительной обработки (EndRequest…) 213 создаётся объект контекста запроса содержит Обработчики предварительных и заключительных событий приложения HttpApplication могут быть в файле Global.asax (Global Application Class) или в модулях с интерфейсом IHttpModule. Модули необходимо регистрировать в web.config Обработчики событий: создаётся приложение