ASP.NET MVC Under the HoodPaul StovellReadify
AgendaASP.NET MVC 101ASP.NET MVC PipelineController FactoriesAction InvokersModel BindersAction FiltersAction ResultsView Engines
Introducing ASP.NET MVC
GET /ViewControllerModel
ASP.NET MVC Pipeline
ASP.NET Request PipelineModuleModuleModuleHandlerpublic interface IHttpHandler{    void ProcessRequest(HttpContext context);boolIsReusable { get; }}HandlerInternetHandlerHandlerHandler
Web Forms<%@ Page Language="C#"     CodeBehind="Default.aspx.cs"     Inherits="Sample.DefaultPage"     %><div>   <asp:TextBoxrunat="server" /></div>PreInitInitInitCompletePreLoadLoadControl EventsLoadCompletePreRenderSaveStateCompleteRenderUnloadnamespace ASP {    public class default_aspx        : Sample.DefaultPage, System.Web.IHttpHandler    {
MVC PipelineInternetModuleModuleController FactoryRoutingController.Execute()MvcHandlerAction InvokerView Engine
MVC Pipeline: Controller Factoriespublic interface IControllerFactory{ IControllerCreateController(RequestContextrequestContext,         string controllerName);     void ReleaseController(IController controller); }
MVC Pipeline: Controllerspublic interface IController{    void Execute(RequestContextrequestContext);}ControllerIActionInvoker
MVC Pipeline: Action Invokerpublic interface IActionInvoker{boolInvokeAction(ControllerContextcontrollerContext,         string actionName);}
MVC Pipeline: Action InvokerAction InvokerFind ActionAuthorization FiltersRequest ValidationModel BindersPre-Action FiltersInvokePost-Action FiltersExecute Action Result
MVC Pipeline: Model Binderspublic interface IModelBinder{    object BindModel(ControllerContextcontrollerContext, ModelBindingContextbindingContext);}
MVC Pipeline: Action Filterspublic interface IActionFilter{    void OnActionExecuting(ActionExecutingContextfilterContext);    void OnActionExecuted(ActionExecutedContextfilterContext);}
MVC Pipeline: Action Resultspublic abstract class ActionResult{    public abstract void ExecuteResult(ControllerContext context);}ViewResultBaseRedirectResultJsonResultFileResultViewResultPartialViewResult
MVC Pipeline: View Enginespublic interface IViewEngine{ViewEngineResultFindPartialView(ControllerContextcontrollerContext,         string partialViewName, booluseCache);ViewEngineResultFindView(ControllerContextcontrollerContext,            string viewName,         string masterName, booluseCache);    void ReleaseView(ControllerContextcontrollerContext, IView view);}
Summary
Q&Awww.asp.net/mvchttp://www.mokosh.co.uk/page/VsCommands.aspxPaul Stovellpaul.stovell@readify.netwww.paulstovell.com

ASP.NET MVC