ASP .NET MVC 3 and Some 4 JaxCodeCamp August 2011 Who Am I • David Fekke • Software Engineer DMEa • Develop iOS software • http://www.fekke.com/blog/ • JaxDUG, JSSUG and JaxFusion Woz “Never trust a computer you can't throw out a window.” 80 Percent Statistic • 80% software projects FAIL • 80% of development is done as code maintenance • 80% of statistics are completely useless DJango Ruby On Rails Fusebox .NET Nuke JSF Struts Grials Whats wrong with Web Forms in ASP.NET? • Web Forms lends to Spaghetti Code • Difficult to maintain • IDs get renamed • Difficult to introduce Coding Standards Tenets of Frameworks • Single Responsibility Principle • Convention over Configuration • SES and URL routing • Good use of Design Patterns • • Work within Test Driven Development (TDD) Enterprise Scalable Web Applications • MVC Design Pattern • Separation of Concerns • DRY - Don’t Repeat Yourself • Better concurrent development MVC stands for Model View Controller • New Project Types in VS2008, 2010 • Not replacing Web Forms • Built on top of ASP .NET • Automatic vs. Manual What is Missing • Does not use Web Forms • No Form Controls • No Script Manager Controller Classes • Controllers are a special class • Controller Class always will have ‘Controller’ in the name • Controllers contains action methods Views • Views are simple • Use ViewData, ViewModel, ViewBag • JQuery libs included • Partial Views • Html helper class Model • Anything you want • Enterprise Framework • ADO .NET • NHibernate • LINQ • Entity Framework Testing • Framework built for Unit Testing • Test Suite, NUnit or any other test framework Routing • Friendly URLs • /products.aspx?categoryid=8 • /products/puppies • Search Engine Safe (SES) ASP.NET MVC 3 • Razor View engine • Better Binding and Model Validation • Unobtrusive Javascript • Hooks for Dependency Injection • Nuget! Razor Model Validation Unobrusive JavaScript Dependency Resolver Insert favorite DI framework here Demo ASP.NET MVC 4 Whats Next? MVC 4 Roadmap • Recipes (Super Scaffolding) • Mobile Support • Template changes • AsycControllers (C# 5 asynchronous) • CSS & Javascript bundling • WebAPI Orchard Project • .NET Sponsored Open Source Project • Content Management System • Built on MVC 3 • NHibernate • Project Castle • Autofac • http://asp.net/mvc • Codeplex • http://weblogs.asp.net/scottgu/ • http://bit.ly/mvc-ebook • http://bit.ly/mvcmusicstore • Nuget • davidfekke@gmail.com • http://www.fekke.com/blog/ • twitter.com/davidfekke