В чем разница между жизненным циклом страницы Asp.net и жизненным циклом страницы Asp.net Mvc?

Какая разница между жизненным циклом страницы Asp.net и жизненный цикл страницы Asp.net Mvc?

Жизненный цикл страницы Asp.net Просто помните SILVER U
s-Start
I-Initialization
L-Load
V- Validate
Обработка E- событий
R-Rendering
U -Unload
Какая фактическая разница на странице Mvc и Asp.net?

Ответ 1

Жизненный цикл страницы ASP.NET полностью отличается от веб-форм, таких событий, как мы, например, в веб-формах, нет: предварительный рендеринг, oninit и т.д. Всякий раз, когда мы запрашиваем URL-адрес, происходит только то, что вызывается какое-то действие контроллера и отображается ответ в браузере.

Жизненный цикл страницы ASP.NET MVC:

Согласно MSDN, основными этапами жизненного цикла страницы asp.net mvc являются следующие:

1) Маршрутизация

направляет URL к контроллеру и действиям

В приложении ASP.NET каждая страница asp.net реализует интерфейс IHTTPHandler.

Этот интерфейс имеет метод ProcessRequest(), который вызывается при запросе страницы. Метод ProcessRequest() отвечает за обработку запроса и генерацию ответа. Таким образом, в приложении ASP.NET все просто, вы запрашиваете страницу в URL, например, http://mysite1\default.aspx а затем она ищет эту страницу на диске и выполняет метод processrequest и генерирует ответ.

Однако в приложении MVC это не работает таким образом. Для конкретного запроса не существует физической страницы. Все запросы направляются в специальный класс Controller. Контроллер отвечает за генерацию ответа и отправку контента обратно в браузер.

2) Модуль маршрутизации Url перехватывает запрос:

Всякий раз, когда вы делаете запрос к приложению ASP.NET MVC, запрос перехватывается HTTP-модулем UrlRoutingModule.

Когда UrlRoutingModule перехватывает запрос, первое, что делает модуль - это оборачивает текущий HttpContext в объект HttpContextWrapper.

Объект HttpContextWrapper является производным от класса HTTPContextBase.

3) Обработчик MVC выполняет

MVCHandler также наследуется от IHTTPAsyncHandler. Когда MVC Handler выполняется, он вызывает асинхронно метод BeginProcessRequest в httpAsyncHandler.

Когда вызывается метод запроса процесса, создается новый контроллер. Контроллер создается из ControllerFactory. Существует класс ControllerBuilder, который устанавливает ControllerFactory.

Вы также можете создать свой собственный ControllerFactory, но по умолчанию это будет DefaultControllerFactory. RequestContext и имя Contoller будут переданы методу CreateController Method для получения конкретного Contoller.

4) Контроллер выполняет

контроллер вызывается и его действие вызывается по запросу пользователя.

Метод Execute() начинается с создания объекта TempData. TempData - это словарь, производный от класса TempDataDictionary и хранящийся в течение короткого сеанса, и это строковый ключ и значение объекта.

Метод Execute() получает действие из RouteData на основе URL-адреса. Затем класс Controller вызывает ContollerActionInvoker, который создает список параметров из запроса.

Эти параметры, извлеченные из параметров запроса, будут действовать как параметры метода. Параметры будут переданы любому выполняемому методу контроллера.

Наконец, он вызовет метод InvokeAction для выполнения действия.

5) Визуализированный метод просмотра

наконец, когда мы вызываем reutrn View() вызывается метод Render View, который помещает ответ на отображаемую страницу.

Контроллер обычно выполняет либо метод RedirectToAction, либо метод RenderView. При вызове метода контроллеров RenderView() вызов делегируется текущему методу ViewEngines RenderView().

Метод WebFormViewEngine.RenderView() использует класс с именем класса ViewLocator, чтобы найти представление. Затем он использует BuildManager для создания экземпляра класса ViewPage по своему пути.

Далее, если страница имеет главную страницу, устанавливается местоположение главной страницы. Если на странице есть ViewData, устанавливается ViewData. Наконец, метод RenderView() вызывается в ViewPage.

Абстрактная пояснительная схема:

enter image description here

На глубине диаграммы:

enter image description here

Поток запросов "

Вот поток запросов asp.net mvc:

enter image description here

Ссылки Ссылки

Для получения более подробной информации см. " Понимание жизненного цикла страницы MVC".

Также вот еще одна хорошая статья, объясняющая жизненный цикл страницы MVC

Ответ 2

Веб-формы ASP.NET

  • В ASP.NET Web Forms используется шаблон шаблона контроллера страниц для рендеринга раскладка. В этом подходе каждая страница имеет свой собственный контроллер, т.е. который обрабатывает запрос.
  • Для достижения состояния с сохранением состояния используется viewstate. Целью было дать разработчикам тот же опыт типичных WinForms приложение.

ASP.NET MVC

  • Он использует подход Front Controller. Этот подход означает контроллер для всех страниц обрабатывает запросы.

  • Подход ASP.NET MVC является апатридом, как и в Интернете. Так что нет концепция зрения.

Но в действительности в MVC нет жизненного цикла страницы как такового (поскольку объект "страницы" отсутствует), но есть конвейер обработки запросов:

Вы можете воспользоваться здесь приятное описание или ссылаться на MVC4 и жизненный цикл страницы?