Inside ASP.NET MVC framework

Preview:

DESCRIPTION

This presentation was shared by The talk is dedicated for developers who is already experienced ASP.NET MVC framework, but always being interested - "What's inside?". We are going to have a journey talking about major workflows and aspects of framework operations: from IIS request into View rendering. That would be much helpful for better undertanding of framework, make your work more productive and fun

Citation preview

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

Recommended