Я пытаюсь изучить MVC подробно, и мне интересно, каков внутренний функциональный поток, в смысле того, какие функции (важные функции) вызываются и что они делают при запуске приложения и какие функции вызываются помимо действий контроллера что мы пишем в нашем приложении, как мы продолжаем.
Выполнение потока в MVC
Ответ 1
Вот подробные шаги:
- Запрос приходит в ASP.NET
- ASP.NET Routing находит соответствие маршрута, вызывая RouteCollection.GetRouteData
- Это в свою очередь вызывает RouteBase.GetRouteData на каждом маршруте, пока не найдет совпадение
- IRouteHandler для соответствующего маршрута имеет метод GetHttpHandler, который называется
- MvcHandler работает (ProcessRequest называется)
- Фабрика контроллера MVC находит и создает контроллер в CreateController
- ControllerActionInvoker определяет, какое действие нужно запустить в InvokeAction.
- Выполняется этап AuthorizationFilter (в том числе метод авторизации на самом контроллере)
- Этап ActionExecuting выполняется
- Запрошенный метод действия выполнен
- Этап ActionExecuted выполняется
- Если есть объект результата, то выполняется этап ResultExecuting
- Если результат не был отменен, то выполняется метод ActionResult ExecuteResult.
- Этап ResultExecuted выполняется
- Если произошла ошибка, выполняется этап исключения
Я также хотел бы отослать вас к диаграмме змеи MVC, которую я использую во многих презентациях на ASP.NET MVC. Вот полное изображение:
В блоге, на который я ссылаюсь, описываются некоторые концепции, используемые в ASP.NET MVC в отношении того, как данные проходят через приложение.
Ответ 2
Ознакомьтесь с бесплатным постером Redgates " Конвейер обработки запросов ASP.NET MVC " для выполнения
и Стивен Сандерсон MCV книга для деталей.