Жизненный цикл ASP.NET определяет, как:
- ASP.NET обрабатывает страницы для получения динамического вывода
- Приложение и его страницы создаются и обрабатываются
- ASP.NET компилирует страницы динамически
Жизненный цикл ASP.NET можно разделить на две группы:
- Жизненный цикл приложения
- Жизненный цикл страницы
Жизненный цикл приложения ASP.NET
Жизненный цикл приложения состоит из следующих этапов:
-
Пользователь делает запрос на доступ к ресурсу приложения, странице. Браузер отправляет этот запрос на веб-сервер.
-
Унифицированный конвейер получает первый запрос, и происходят следующие события:
-
Объект класса ApplicationManager создан.
-
Объект класса HostingEnvironment создается для предоставления информации о ресурсах.
-
Элементы верхнего уровня в приложении компилируются.
-
-
Объекты ответа созданы. Объекты приложения, такие как HttpContext, HttpRequest и HttpResponse, создаются и инициализируются.
-
Экземпляр объекта HttpApplication создан и назначен запросу.
-
Запрос обрабатывается классом HttpApplication. Этот класс вызывает различные события для обработки запроса.
Пользователь делает запрос на доступ к ресурсу приложения, странице. Браузер отправляет этот запрос на веб-сервер.
Унифицированный конвейер получает первый запрос, и происходят следующие события:
Объект класса ApplicationManager создан.
Объект класса HostingEnvironment создается для предоставления информации о ресурсах.
Элементы верхнего уровня в приложении компилируются.
Объекты ответа созданы. Объекты приложения, такие как HttpContext, HttpRequest и HttpResponse, создаются и инициализируются.
Экземпляр объекта HttpApplication создан и назначен запросу.
Запрос обрабатывается классом HttpApplication. Этот класс вызывает различные события для обработки запроса.
Жизненный цикл страницы ASP.NET
Когда страница запрашивается, она загружается в память сервера, обрабатывается и отправляется в браузер. Затем он выгружается из памяти. На каждом из этих шагов доступны методы и события, которые могут быть переопределены в соответствии с потребностями приложения. Другими словами, вы можете написать свой собственный код, чтобы переопределить код по умолчанию.
Класс Page создает иерархическое дерево всех элементов управления на странице. Все компоненты на странице, кроме директив, являются частью этого дерева управления. Вы можете увидеть дерево элементов управления, добавив trace = «true» в директиву страницы. Мы рассмотрим директивы и трассировку страниц в разделах «Директивы» и «Обработка событий».
Фазы жизненного цикла страницы:
- инициализация
- Создание элементов управления на странице
- Восстановление и поддержание состояния
- Выполнение кодов обработчиков событий
- Рендеринг страницы
Понимание цикла страницы помогает в написании кодов для того, чтобы сделать что-то конкретное, происходящее на любой стадии жизненного цикла страницы. Это также помогает в написании пользовательских элементов управления и их инициализации в нужное время, заполнении их свойств данными состояния просмотра и выполнении кода поведения элемента управления.
Ниже приведены различные этапы страницы ASP.NET:
-
Запрос страницы — Когда ASP.NET получает запрос страницы, он решает, нужно ли проанализировать и скомпилировать страницу, или будет кэшированная версия страницы; соответственно ответ отправлен.
-
Начало жизненного цикла страницы — на этом этапе устанавливаются объекты запроса и ответа. Если запрос является старым запросом или отправкой обратно, свойство страницы IsPostBack устанавливается в значение true. Свойство UICulture страницы также установлено.
-
Инициализация страницы — на этом этапе элементам управления на странице назначается уникальный идентификатор путем установки свойства UniqueID, и применяются темы. Для нового запроса загружаются данные обратной передачи, а свойства элемента управления восстанавливаются до значений состояния просмотра.
-
Загрузка страницы — на этом этапе свойства элемента управления устанавливаются с использованием значений состояния просмотра и состояния элемента управления.
-
Проверка — вызывается метод проверки элемента управления проверки, и при успешном его выполнении для свойства IsValid страницы устанавливается значение true.
-
Обработка события обратной передачи — если запрос является обратной передачей (старый запрос), вызывается связанный обработчик события.
-
Отрисовка страницы. На этом этапе состояние просмотра страницы и все элементы управления сохраняются. Страница вызывает метод Render для каждого элемента управления, а выходные данные рендеринга записываются в класс OutputStream свойства Response страницы.
-
Выгрузить — обработанная страница отправляется клиенту, а свойства страницы, такие как Ответ и Запрос, выгружаются и вся очистка выполняется.
Запрос страницы — Когда ASP.NET получает запрос страницы, он решает, нужно ли проанализировать и скомпилировать страницу, или будет кэшированная версия страницы; соответственно ответ отправлен.
Начало жизненного цикла страницы — на этом этапе устанавливаются объекты запроса и ответа. Если запрос является старым запросом или отправкой обратно, свойство страницы IsPostBack устанавливается в значение true. Свойство UICulture страницы также установлено.
Инициализация страницы — на этом этапе элементам управления на странице назначается уникальный идентификатор путем установки свойства UniqueID, и применяются темы. Для нового запроса загружаются данные обратной передачи, а свойства элемента управления восстанавливаются до значений состояния просмотра.
Загрузка страницы — на этом этапе свойства элемента управления устанавливаются с использованием значений состояния просмотра и состояния элемента управления.
Проверка — вызывается метод проверки элемента управления проверки, и при успешном его выполнении для свойства IsValid страницы устанавливается значение true.
Обработка события обратной передачи — если запрос является обратной передачей (старый запрос), вызывается связанный обработчик события.
Отрисовка страницы. На этом этапе состояние просмотра страницы и все элементы управления сохраняются. Страница вызывает метод Render для каждого элемента управления, а выходные данные рендеринга записываются в класс OutputStream свойства Response страницы.
Выгрузить — обработанная страница отправляется клиенту, а свойства страницы, такие как Ответ и Запрос, выгружаются и вся очистка выполняется.
События жизненного цикла страницы ASP.NET
На каждом этапе жизненного цикла страницы на странице возникают некоторые события, которые можно закодировать. Обработчик события — это, по сути, функция или подпрограмма, связанная с событием, использующая декларативные атрибуты, такие как Onclick или handle.
Ниже приведены события жизненного цикла страницы:
PreInit — PreInit — первое событие в жизненном цикле страницы. Он проверяет свойство IsPostBack и определяет, является ли страница обратной передачей. Он устанавливает темы и главные страницы, создает динамические элементы управления, а также получает и устанавливает значения свойств профиля. Это событие может быть обработано путем перегрузки метода OnPreInit или создания обработчика Page_PreInit.
Init — Событие Init инициализирует свойство элемента управления и строит дерево элементов управления. Это событие может быть обработано путем перегрузки метода OnInit или создания обработчика Page_Init.
InitComplete — событие InitComplete позволяет отслеживать состояние просмотра. Все элементы управления включают отслеживание состояния просмотра.
LoadViewState — событие LoadViewState позволяет загрузить информацию о состоянии просмотра в элементы управления.
LoadPostData — на этом этапе содержимое всех полей ввода определяется тегом <form>.
PreLoad — PreLoad происходит до загрузки данных обратной передачи в элементы управления. Это событие может быть обработано путем перегрузки метода OnPreLoad или создания обработчика Page_PreLoad.
Load — событие Load сначала вызывается для страницы, а затем рекурсивно для всех дочерних элементов управления. Элементы управления в дереве элементов управления созданы. Это событие может быть обработано путем перегрузки метода OnLoad или создания обработчика Page_Load.
LoadComplete — процесс загрузки завершен, запущены обработчики событий управления и проверка страницы. Это событие может быть обработано путем перегрузки метода OnLoadComplete или создания обработчика Page_LoadComplete
PreRender — событие PreRender наступает непосредственно перед визуализацией вывода. Обрабатывая это событие, страницы и элементы управления могут выполнять любые обновления до отображения вывода.
PreRenderComplete — поскольку событие PreRender запускается рекурсивно для всех дочерних элементов управления, это событие обеспечивает завершение фазы предварительного рендеринга.
SaveStateComplete — состояние элемента управления на странице сохраняется. Персонализация, контроль состояния и просмотр информации о состоянии сохраняется. HTML-разметка генерируется. Этот этап может быть обработан путем переопределения метода Render или создания обработчика Page_Render.
UnLoad — Фаза UnLoad является последней фазой жизненного цикла страницы. Он вызывает событие UnLoad для всех элементов управления рекурсивно и, наконец, для самой страницы. Окончательная очистка выполняется, и все ресурсы и ссылки, такие как соединения с базой данных, освобождаются. Это событие можно обработать, изменив метод OnUnLoad или создав обработчик Page_UnLoad.