2. Agenda
ASP.NET MVC, The Steps
Model, Controller, View
Why ASP.NET MVC
Domain, AKA, Model
The Domain Model
The Ubiquitous Language
Building Blocks
Entities / Value Objects
Aggregates / Factories
Repositories
Services / Modules
Putting it all together
3. Model
View Controller
ASP.NET MVC – Form few thousand feet …
4. ASP.NET Futures Themes
Webforms
AJAX
MVC
Dynamic Data
Feature Sharing
Webforms with AJAX
Dynamic Data with MVC
…
jQuery
5. M – V – C, The Steps …
Routing
Request
Forward
Step 0
Incoming request matched by Routing
6. M – V – C, The Steps …
Controller
Request
Step 1
Incoming request directed to Controller
7. M – V – C, The Steps …
Controller
Request Model
Step 2
Controller processes request and forms a data Model
8. M – V – C, The Steps …
Controller
Request
View
Step 3
Model is passed to View
9. M – V – C, The Steps …
Controller
Request
View
Step 4
View transforms Model into appropriate output format
10. M – V – C, The Steps …
Controller
Request
View Response
Step 5
Response is rendered
11. The ASP.NET MVC Building Blocks
Simply creating a new project
12. The model
The class that needs to be presented, or processed
Can be bound in controller
Model Binders
Can live anywhere in your solution
13. The Controller
A set of action methods that share a common
Controller context
… which is different from HTTP context
An action:
1. Receives the request parameters
2. Creates any required model (user, etc..)
3. Calls services or repositories to execute data or get
the models to be displayed
4. Selects the view and sends the model to it, with any
additional info (like page title, …)
15. The View
Just renderer
No logic should go there
Page lifecycle ?
Yes and No!
Code Behind exists but not recommended
No View State, No Server Controls
Really?
HTML Helpers
Takes the view data from the controller
Can be typed or Dictionary of values
Not Just Web forms code
View Engines
16. View Engines
Web forms
• The default option
• Comes with VS
• Same experience:
• Syntax
• VS Support
17. View Engines
NHAML
• Based on Ruby On Rails HAML Engine
• http://code.google.com/p/nhaml
• http://andrewpeters.net/2007/12/19/introducing-nhaml-an-aspnet-mvc-view-engine
engine
19. Why Oh, WHY !!!
Easier …
Tight control over markup
User/SEO friendly URLs
Conventions and Guidance
jQuery (Built-in)
Tight control: Not just markup
Everything is replaceable
Interface based style
Not full with sealed/internal stuff
Testability
The guys who created it are just awesome
94% Code Coverage/1051 unit tests
20. The other side of the story
It’s not as easy as you think!
To go low level or not to go; this IS the question.
IIS 6 Quirks
Custom Controls
21. Where to go
Official website http://asp.net/mvc
Source Code http://codeplex.com/aspnet
Blogs
The ASP.NET MVC Team
Scott Guthrie http://weblogs.asp.net/scottgu
Rob Conrey http://blog.wekeroad.com
MVC Store Front http://blog.wekeroad.com/mvc-storefront
Phil Haack http://haacked.com
Scott Hanselman http://hanselman.com
Stephen Walthler http://weblogs.asp.net/stephenwalther
http://www.chrisvandesteeg.nl
http://www.singingeels.com