How ASP.NET MVC Works (For Aspiring Architects) - #2
This post briefly describes ASP.NET MVC request processing model. It is digested and based on Understanding the MVC Application Execution Process (MSDN) | Resources |
ASP.NET MVC Execution Process | Stage | Details | | Receive first request for the application | In the Global.asax file, Route objects are added to the RouteTable object. void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
|
|
Perform routing
|
The UrlRoutingModule module uses the first matching Route object in the RouteTable collection to create the RouteData object, which it then uses to create a RequestContext object.
|
|
Create MVC request handler
|
The MvcRouteHandler object creates an instance of the MvcHandler class and passes the RequestContext instance to the handler.
|
|
Create controller
|
The MvcHandler object uses the RequestContext instance to identify the IControllerFactory object (typically an instance of the DefaultControllerFactory class) to create the controller instance with.
|
|
Execute controller
|
The MvcHandler instance calls the controller's Execute method.
|
|
Invoke action
|
For controllers that inherit from the ControllerBase class, the ControllerActionInvoker object that is associated with the controller determines which action method of the controller class to call, and then calls that method.
|
|
Execute result
|
The action method receives user input, prepares the appropriate response data, and then executes the result by returning a result type. The built-in result types that can be executed include the following: ViewResult (which renders a view and is the most-often used result type), RedirectToRouteResult, RedirectResult, ContentResult, JsonResult, FileResult, and EmptyResult.
|
Related Materials
|
This post is made with PracticeThis.com plugin for Windows Live Writer