Выполнение потока в MVC

Я пытаюсь изучить MVC подробно, и мне интересно, каков внутренний функциональный поток, в смысле того, какие функции (важные функции) вызываются и что они делают при запуске приложения и какие функции вызываются помимо действий контроллера что мы пишем в нашем приложении, как мы продолжаем.

Ответы

Ответ 1

Вот подробные шаги:

  1. Запрос приходит в ASP.NET
  2. ASP.NET Routing находит соответствие маршрута, вызывая RouteCollection.GetRouteData
  3. Это в свою очередь вызывает RouteBase.GetRouteData на каждом маршруте, пока не найдет совпадение
  4. IRouteHandler для соответствующего маршрута имеет метод GetHttpHandler, который называется
  5. MvcHandler работает (ProcessRequest называется)
  6. Фабрика контроллера MVC находит и создает контроллер в CreateController
  7. ControllerActionInvoker определяет, какое действие нужно запустить в InvokeAction.
  8. Выполняется этап AuthorizationFilter (в том числе метод авторизации на самом контроллере)
  9. Этап ActionExecuting выполняется
  10. Запрошенный метод действия выполнен
  11. Этап ActionExecuted выполняется
  12. Если есть объект результата, то выполняется этап ResultExecuting
  13. Если результат не был отменен, то выполняется метод ActionResult ExecuteResult.
  14. Этап ResultExecuted выполняется
  15. Если произошла ошибка, выполняется этап исключения

Я также хотел бы отослать вас к диаграмме змеи MVC, которую я использую во многих презентациях на ASP.NET MVC. Вот полное изображение: alt text

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