ASP.NET MVC For Smart People
description
Transcript of ASP.NET MVC For Smart People
ASP.NET MVC For Smart PeopleScott Galloway, Program Manager, ASP.NETMicrosoft [email protected]://www.mostlylucid.nethttp://www.twitter.com/scottgal
What is ASP.NET MVC?
• A new Web Application Project type• Simply an option• Not a replacement for WebForms• Builds on top ASP.NET• Manual vs Automatic Transmission
How was it developed?• Transparently• Regular source code releases on CodePlex• Previews 1 – 5, Beta, RC1, RC2. 8 releases!• Community feedback via forums,
StackOverflow, etc…• Agilely• 94% Code Coverage/1051 unit tests• Daily Triage Meetings and weekly design
meetings• Small agile team
What is MVC?
• A design pattern• Acronym for
Model ● View ● Controller• Separation of concerns
What is MVC?
Step 1Incoming request directed to Controller
Request
Controller
What is MVC?
Step 2Controller processes request and forms a data Model
Controller
Model
What is MVC?
Step 3Model is passed to View
Controller
View
What is MVC?
Step 4View transforms Model into appropriate output format
Controller
View
What is MVC?
Step 5Response is rendered
Response
Controller
View
Demo File->New
Framework Goals
• Frictionless Testability• Tight control over markup• User/SEO friendly URLs• Leverage the benefits of ASP.NET• Conventions and Guidance
Separation Of Concerns
• Each component has one responsibility• SRP – Single Responsibility Principle• DRY – Don’t Repeat Yourself
• More easily testable• Helps with concurrent
development
Extensible
• Replace any component of the system• Interface-based architecture• Very few sealed methods / classes
• Plays well with others
WebForms are great …
• Mature, proven technology• Huge Third Party Control
Ecosystem• Scalable• Extensible• Familiar feel to WinForms
developers
… they have problems
• Abstractions aren’t very abstract• Difficult to test• Lack of control over markup• It does things you didn’t tell it to
do
Demo A real app (kind of)
Resources• Phil Haack’s blog:
www.haacked.com• ASP.NET MVC Site:
www.asp.net/mvc• Scott Guthrie’s blog:
weblogs.asp.net/scottgu• Rob Conery’s blog:
blog.wekeroad.com/