Жизненный цикл страницы MVC объясняется простым языком

Опубликовано: 2021-11-26

В этой статье основное внимание будет уделено жизненному циклу приложения MVC и тому, как приложение обрабатывает запрос при его прохождении через компоненты приложения. В жизненном цикле MVC присутствуют два жизненных цикла . Эти два жизненных цикла:

  • Жизненный цикл приложения
  • Жизненный цикл запроса.

Оглавление

Жизненный цикл приложения

Жизненный цикл приложения обычно означает время, когда процесс приложения начинает выполняться. Для обозначения жизненного цикла приложения MVC отмечают начало и конец приложения.

Жизненный цикл запроса

Жизненный цикл запроса означает серию событий, которые происходят всякий раз, когда приложение обрабатывает HTTP-запрос. Маршрутизация — это точка входа для запуска любого приложения MVC. Когда делается запрос к платформе ASP.NET, принимается решение о том, как обработать запрос через модуль маршрутизации. Термин «модуль» означает компоненты .NET, которые используются для добавления функциональности в код. Модули маршрутизации несут ответственность за сопоставление входящего URL-адреса с соответствующими маршрутами, определенными в приложении. С каждым маршрутом связан обработчик маршрута, который отмечает точку входа в структуру MVC.

Фреймворк MVC отвечает за обработку преобразования данных маршрута в контроллеры, которые в дальнейшем будут обрабатывать запросы. Как только создание контроллера будет завершено, следующим шагом будет действие. Это делается с помощью компонента вызова действия, который выбирает метод действия для вызова контроллера.

После завершения подготовки к результату действия следующим шагом является выполнение результата. Создается шаг отделения результата от исполнения результата. Для результата типа представления приложение вызовет механизм представления, и он найдет и поможет в отображении представления. Если результатом не является представление, выполнение действия произойдет само по себе. Это результат выполнения, который генерирует фактический ответ на исходный HTTP-запрос.

Разработчики знают, что большинство компонентов используются для обработки запроса. В большинстве случаев прорабатываются методы и контроллеры, связанные с действиями. Кроме того, прорабатываются различные результаты действий и представления. Но в рамках MVC есть и другие компоненты. Может возникнуть много вопросов о том, как поток запросов осуществляется через различные компоненты или роль модуля HTTP и обработчик при обработке запроса. Фреймворк MVC является фреймворком для веб-разработки, поэтому в конвейере MVC фреймворка должны быть модули HHTP и обработчики HTTP.

В жизненном цикле страницы MVC присутствует множество компонентов , кроме контроллера и методов действий.

УрлРоутингМодуле

Это тип модуля HTTP. Всякий раз, когда запрос делается впервые, он перехватывается через модуль UrlRoutingModule. В этом модуле решается, должно ли приложение MVC обрабатывать запрос. UrlRoutingModule выбирает первый подходящий маршрут.

Как запрос сопоставляется с теми маршрутами, которые присутствуют в приложении MVC через модуль UrlRoutingModule?

Глядя на метод RegisterRoutes, который вызывается из global.asax, можно увидеть маршруты, добавленные в RouteCollection маршрутов. Вызов метода выполняется из обработчика событий в application_start файла global.asax.

Источник

Как определяются маршруты в RouteHandler?

Маршруты определены как методы расширения, как это можно увидеть в методе maproute. Обработчик маршрута связан со всеми маршрутами.

Метод UrlRoutingModule определяется следующим образом.

Источник

Из приведенного выше объяснения можно узнать, что UrlRoutingModule знает все маршруты, определенные в приложении. Поэтому правильный маршрут можно сопоставить с запросом в приложении.

Важно отметить, что модуль UrlRoutingModule участвует в выборе первого подходящего маршрута. Таким образом, всякий раз, когда совпадение обнаруживается, процесс сканирования останавливается. Если обобщить то, что происходит на этом этапе, то обработчик маршрутов привязывается к маршрутам через U RLRoutingModule.

РутХэндлер

С помощью метода maproute маршруты привязываются к экземплярам MvcRouteHandler. Интерфейс IRouteHandler реализован через MvcRouteHandler.

Поэтому объект MvcRouteHandler используется для получения ссылки на объект MvcRouteHandler, который является HTTPHandler приложения.

Создание MvcRouteHandler требует вызова метода PostResolveRequestCache(). Этот метод PostResolveRequestCache() можно определить следующим образом:

Источник

Поэтому в методе PostResolveRequestCache() происходят следующие события.

  • Метод GetRouteData() присутствует в свойстве RouteCollection. Метод вызывается и передается через HttpContext.
  • Объект RouteData возвращается через метод GetRouteData().
  • свойство RouteHandler содержится в routeData, которое возвращает обработчик IRouteHandler для текущего запроса, т. е. MvcRouteHandler.
  • Метод G etHttpHandler() связан с MvcRouteHandler, который возвращает ссылку на MvcHandler.
  • Затем элементы управления делегируются экземпляру MvcHandler.

мвкхандлер

MvcHandler — это обычный обработчик HTTP. Поскольку это обработчик HTTP, выполняется реализация метода ProcessRequest(). Этот метод ProcessRequest() может быть определен как:

Источник

Метод ProcessRequest() используется для вызова метода ProcessRequestInit(), как определено на изображении ниже:

Источник
В методе ProcessRequest() происходят следующие события.

  • ControllerFactory создается посредством вызова метода ProcessRequestInit().
  • ControllerFactory создает контроллер.
  • Вызывается метод Execute() контроллера.

КонтроллерФабрика

Можно заметить, что ControllerFactory получается с помощью метода ProcessRequest(). Затем ControllerFactory используется для создания объекта объекта Controller. Интерфейс IControllerFactory реализуется фабрикой Controller.

ПО УМОЛЧАНИЮ инфраструктура MVC создает тип DefaultControllerFactory, когда ControllerBuilder используется для создания ControllerFactory.

Следующая строка кода создает ControllerFactory в методе ProcessRequestInit().

Источник

Контроллер

Было замечено, что объект Controller создается в ControllerFactory в методе ProcessRequest() MvcHandler. Созданный контроллер содержит методы для действий, которые должны быть выполнены фреймворком. Всякий раз, когда в браузере делается запрос URL-адреса, вызывается метод для действий. Контроллеры созданы так, что нет явной реализации интерфейса IControlle. Класс Controller используется для создания контроллеров , которые предоставляют несколько функций. Класс Controller может наследовать другой класс Controller, который называется «ControllerBase», как определено в приведенном ниже коде:

Источник

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

После создания контроллера через фабрику контроллеров происходят следующие события:

  • Вызов метода Execute() базы контроллеров.
  • Метод ExecuteCore() вызывается методом Execute(), объявленным как абстрактный, а затем определяемым через класс Controller.
  • Имя действия извлекается из RouteData с помощью метода ExecuteCore() класса Controller.
  • Метод InvokeAction() ActionInvoker вызывается методом ExecuteCore().

ActionInvoker

Используется для выбора действий.

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

События, которые происходят, когда вызывается метод InvokeAction() ActionInvoker:

  • Информация о контроллере должна быть получена с помощью ActionInvoker и действия, которое необходимо выполнить.
  • Эту информацию предоставляет объект дескриптора.
  • Имя контроллера и имя действия предоставляются классом дескриптора действия и контроллера.
  • Есть вызов ActionMethod .

ДействиеРезультат

ActionResult — это тип абстрактного класса. Будучи абстрактным методом, существуют разные реализации метода ExecuteResult(), предоставляемые разными подклассами.

Следующие события происходят в ActionResult

  • Существует вызов методов OnActionExecuting ActionFilters.
  • Вызов действия метода.
  • Вызов методов OnActionExecuted методов ActionFilters.
  • Возврат ActionResult из ActionMethod
  • Вызов метода ExecuteResult() объекта ActionResult.

ViewEngine

Большинство приложений используют ViewResult в качестве возвращаемого типа. Представление визуализируется через ViewEngine клиенту. Из этого представления можно сгенерировать HTML. HTML генерируется из представления через ViewEngine.

Выводы

Понимание роли каждого компонента в приложении является важным шагом. Таким образом, можно понять связи между компонентами и принцип их работы. Если вы хотите быть опытным разработчиком, то совершенствование своих навыков — это один из способов. Вы можете посетить онлайн-курсы upGrad по разработке программного обеспечения, которые дадут вам сертификацию и экспертную подготовку в области разработки приложений и программного обеспечения. Курс предназначен как для мужчин, так и для женщин, работающих профессионалов и сертифицирован IIIT-B, и вы получите их статус выпускника.

Можете ли вы объяснить жизненный цикл страницы MVC?

Когда применяется MVC, приложение делится на три уровня: уровень данных или модель, пользовательский интерфейс или представление и контроллер. Каждый уровень MVC имеет свою функцию. Во-первых, слой пользовательского интерфейса или представления — это пользовательский интерфейс. Это основной интерфейс между пользователями и приложением. Он отвечает за получение пользовательского ввода и представление результатов. Затем контроллер подключается ко всем компонентам на уровне представления и обрабатывает пользовательский ввод, отправляет данные на уровень модели и отправляет результат обратно пользователю. Уровень модели — это место, где хранятся данные. Он отвечает за контроль данных. Кроме того, уровень модели также отвечает за чтение и запись данных в хранилище.

Как мы можем поддерживать сеансы в MVC?

Платформа ASP.NET MVC использует возможности состояния сеанса ASP.NET. Состояние сеанса — это веб-служба, встроенная в платформу ASP.NET. Он отвечает за поддержку всех объектов, данных и другой информации, связанной с данным сеансом. Объект SessionState поддерживает значения состояния сеанса. Он также отвечает за заполнение и поддержку значений объекта Session. Объект Session действует как шлюз к состоянию сеанса. Это свойство объекта SessionState, которое используется для хранения и извлечения значений состояния сеанса.

Сколько типов фильтров существует в MVC?

Фильтры в MVC — это те, которые находятся между контроллером и моделью и могут использоваться для проверки ввода пользователя или изменения вывода модели. Ниже приведены некоторые фильтры в MVC. 1. Фильтры проверки. Фильтры проверки помогают проверять вводимые пользователем данные. 2. Фильтры действий. Фильтры действий помогают изменять выходные данные модели. 3. Фильтры модели. Фильтры модели помогают изменить выходные данные модели. 4. Выходные фильтры. Выходные фильтры используются для модификации выходных данных модели.