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


  1. Inside ASP.NET MVC framework Alexander Beletsky, E-conomic http://beletsky.net @alexbeletsky

  2. ASP.NET MVC is cool! Why?

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

    curtain • Improve your knowledge • Learn from best • Super fun
  4. ASP.NET or ASP.NET MVC ? Have you heard such question?

  5. ASP.NET is foundation • Request processing engine • Pushing request

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

    • Creates the ControllerFactory • Execute the controller
  7. Show me the code

  8. Who is responsible for calling MvcHander?

  9. 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
  10. Route = URL + Constraints + IRouteHanlder

  11. Show me the code

  12. ControllerBuilder & ControllerFactory • ControllerBuilder creates ControllerFactory • ControllerFactory creates

  13. Difference in MVC2 and MVC3 • MVC2 ControllerBuilder creates factory

    "directly" • MVC3 ControllerBuilder uses SingleServiceResolver • SingleServiceResolver depends on IDependencyResolver
  14. Show me the code

  15. IDependencyResolver • Bridge between ASP.NET MVC and IoC container •

    Very simple interface • Introduce extensibility for many entities
  16. Show me the code

  17. Controller Execution • Get the name of the Action from

    Route • Call ControllerActionInvoker to Invoke action
  18. 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.
  19. Why use filters? • DRY code • AOP principles in

    action • Better reuse • Clean code • MVC3 introduces global filters
  20. Show me the code

  21. 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).
  22. Action Result rendering • Extract view name from Route •

    Find view associated with with Route & Action Result • Render the view
  23. THANK YOU! http://www.beletsky.net/search/label/InsideMVC twitter: @alexbeletsky