Post on 26-May-2015
description
transcript
Inside ASP.NET MVC framework
Alexander Beletsky, E-conomichttp://beletsky.net
@alexbeletsky
ASP.NET MVC is cool!Why?
Hey, it's open source
• See what happens behind the curtain• Improve your knowledge• Learn from best• Super fun
ASP.NET or ASP.NET MVC ?
Have you heard such question?
ASP.NET is foundation
• Request processing engine• Pushing request thought pipeline• Pipeline consists of Modules• And ends with Handler
MvcHanlder - heart of ASP.NET MVC
• Implements IHttpAsyncHandler, IHttpHandler• Creates the ControllerFactory• Execute the controller
Show me the code
Who is responsible for calling MvcHander?
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
Route = URL + Constraints + IRouteHanlder
Show me the code
ControllerBuilder & ControllerFactory
• ControllerBuilder creates ControllerFactory• ControllerFactory creates Controller
Difference in MVC2 and MVC3
• MVC2 ControllerBuilder creates factory "directly"• MVC3 ControllerBuilder uses SingleServiceResolver• SingleServiceResolver depends on IDependencyResolver
Show me the code
IDependencyResolver
• Bridge between ASP.NET MVC and IoC container• Very simple interface• Introduce extensibility for many entities
Show me the code
Controller Execution
• Get the name of the Action from Route• Call ControllerActionInvoker to Invoke action
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.
Why use filters?
• DRY code• AOP principles in action• Better reuse• Clean code• MVC3 introduces global filters
Show me the code
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).
Action Result rendering
• Extract view name from Route• Find view associated with with Route & Action Result• Render the view
THANK YOU!
http://www.beletsky.net/search/label/InsideMVCtwitter: @alexbeletsky