Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Inside ASP.NET MVC Framework

Inside ASP.NET MVC Framework

Presented on KievAltNet, Network Conference 2011

This a speech dedicated to experienced ASP.NET MVC developers who is curious about - "How things are done?". During the talk we'll make a trip right from HttpRequest back to View rendering and response produce.

Alexander Beletsky

October 30, 2011

More Decks by Alexander Beletsky

Other Decks in Programming


  1. Hey, it's open source • See what happens behind the

    curtain • Improve your knowledge • Learn from best • Super fun
  2. ASP.NET is foundation • Request processing engine • Pushing request

    thought pipeline • Pipeline consists of Modules • And ends with Handler
  3. MvcHanlder - heart of ASP.NET MVC • Implements IHttpAsyncHandler, IHttpHandler

    • Creates the ControllerFactory • Execute the controller
  4. Here comes Routing • Included in framework 3.5 SP1 •

    Implements recomendations by Jakob Nielsen • Save us of URL re-writing module • Provides decoupling of URL and page
  5. Difference in MVC2 and MVC3 • MVC2 ControllerBuilder creates factory

    "directly" • MVC3 ControllerBuilder uses SingleServiceResolver • SingleServiceResolver depends on IDependencyResolver
  6. IDependencyResolver • Bridge between ASP.NET MVC and IoC container •

    Very simple interface • Introduce extensibility for many entities
  7. Controller Execution • Get the name of the Action from

    Route • Call ControllerActionInvoker to Invoke action
  8. Filters • Authorization filters – Implements the IAuthorizationFilter attribute. •

    Action filters – Implements the IActionFilter attribute. • Result filters – Implements the IResultFilter attribute. • Exception filters – Implements the IExceptionFilter attribute.
  9. Why use filters? • DRY code • AOP principles in

    action • Better reuse • Clean code • MVC3 introduces global filters
  10. Action Results • ViewResult - Represents HTML and markup. •

    EmptyResult - Represents no result. • RedirectResult - Represents a redirection to a new URL. • JsonResult - Represents a JavaScript Object Notation result that can be used in an AJAX application. • JavaScriptResult - Represents a JavaScript script. • ContentResult - Represents a text result. • FileContentResult - Represents a downloadable file (with the binary content). • FilePathResult - Represents a downloadable file (with a path). • FileStreamResult - Represents a downloadable file (with a file stream).
  11. Action Result rendering • Extract view name from Route •

    Find view associated with with Route & Action Result • Render the view