Models, Views, Controllers and all that other crazy stuff!
Models, Views, Controllers and all that other crazy stuff!
Agenda

 What is MVC?
 Questions You Might be Thinking
 Demonstration…
 Code, code, and more code!
 Questions & Answers
What is MVC?

 Concept been around since 1979
 Separation of Concerns
   “Separate content from presentation and data-
    processing (model) from content.” --Wikipedia
What is MVC?

 What do I gain from ASP.NET MVC?
     Clean separation of concerns
     Testability & TDD
     Highly extensible and pluggable
     Powerful URL mapping for clean REST-ful URLs
     Can leverage existing ASP.NET features
       Authentication, Authorization, & Roles
       Session, State Management, Output & Data Caching
       Localization, etc…
   Total control over the rendered View
What is MVC?

 What do I loose from ASP.NET MVC?
   ASP.NET Web Form post-back model
   Dependency of View State
   Initially Rich Controls may be more difficult
   Tons of HTML being generated for you
   Big learning curve for .NET Web Developers
Questions You Might Be Thinking

 Will ASP.NET MVC replace ASP.NET Web
  Forms?
 How would I go about choosing between
  using ASP.NET MVC or ASP.NET Web Forms?
 Is ASP.NET MVC ready for production?
 When will ASP.NET MVC be officially
  released?
Demonstration

 Pet Shop 5.0
 Technologies Used
   Visual Studio Team System 2008
   .NET 3.5 using C# 3.0 & LINQ to SQL
   ASP.NET MVC Preview 5
   Microsoft SQL Server 2005 Express
   jQuery v.1.2.6
     Flexigrid
     jGrowl
Sources of Inspiration

   Scott Guthrie
     http://weblogs.asp.net/Scottgu/
   Scott Hanselman
     http://www.hanselman.com/blog/
   Phil Haack
     http://haacked.com/
   Stephen Walther
     http://weblogs.asp.net/StephenWalther/
Come on… I know you have at least one question
  that you’ve been dying to ask!
Questions I thought you’d ask… #1a

   What is the difference between MVC & MVP
     And no… I’m not referring to Microsoft’s Most
      Valuable Professional (of which you can find some in
      here)
Questions I thought you’d ask… #1b

   What is the difference between MVC & MVP
     MVC
      Controller responsible for determining which view is
       displayed in response to any action.
      The view does not directly bind to the model.
      The view usually will not have any logic in the code
       behind.
     MVP
      Presenter contains the UI business logic for the view.
      All actions from the view delegate to the presenter.
      Tends to be a very natural pattern for achieving
       separated presentation in ASP.NET Web Forms.
Questions I thought you’d ask… #1c
Questions I thought you’d ask… #2

   What is the DRY Principle?
     It means “Don’t Repeat Yourself”, but it isn’t
      necessarily talking about the Copy/Paste Code
      Smell… that is better described by the “Once and
      Only Once” (OAOO) principle.
     An example of something really DRY is XSLT…
      where knowledge is not repeated.
     “The DRY code philosophy is stated as ‘Every piece
      of knowledge must have a single, unambiguous,
      authoritative representation within a system.’”
      --Wikipedia
Questions I thought you’d ask… #3

   What is the PRG Pattern?
     “…instead of returning an HTML page directly, the
      POST operation returns a redirection command…
      instructing the browser to load a different page
      using an HTTP GET request. The result page can
      then safely be bookmarked or reloaded without
      unexpected side effects.” --Wikipedia

Asp netmvc

  • 1.
    Models, Views, Controllersand all that other crazy stuff!
  • 2.
    Models, Views, Controllersand all that other crazy stuff!
  • 3.
    Agenda  What isMVC?  Questions You Might be Thinking  Demonstration…  Code, code, and more code!  Questions & Answers
  • 4.
    What is MVC? Concept been around since 1979  Separation of Concerns  “Separate content from presentation and data- processing (model) from content.” --Wikipedia
  • 5.
    What is MVC? What do I gain from ASP.NET MVC?  Clean separation of concerns  Testability & TDD  Highly extensible and pluggable  Powerful URL mapping for clean REST-ful URLs  Can leverage existing ASP.NET features  Authentication, Authorization, & Roles  Session, State Management, Output & Data Caching  Localization, etc…  Total control over the rendered View
  • 6.
    What is MVC? What do I loose from ASP.NET MVC?  ASP.NET Web Form post-back model  Dependency of View State  Initially Rich Controls may be more difficult  Tons of HTML being generated for you  Big learning curve for .NET Web Developers
  • 7.
    Questions You MightBe Thinking  Will ASP.NET MVC replace ASP.NET Web Forms?  How would I go about choosing between using ASP.NET MVC or ASP.NET Web Forms?  Is ASP.NET MVC ready for production?  When will ASP.NET MVC be officially released?
  • 8.
    Demonstration  Pet Shop5.0  Technologies Used  Visual Studio Team System 2008  .NET 3.5 using C# 3.0 & LINQ to SQL  ASP.NET MVC Preview 5  Microsoft SQL Server 2005 Express  jQuery v.1.2.6  Flexigrid  jGrowl
  • 9.
    Sources of Inspiration  Scott Guthrie  http://weblogs.asp.net/Scottgu/  Scott Hanselman  http://www.hanselman.com/blog/  Phil Haack  http://haacked.com/  Stephen Walther  http://weblogs.asp.net/StephenWalther/
  • 10.
    Come on… Iknow you have at least one question that you’ve been dying to ask!
  • 11.
    Questions I thoughtyou’d ask… #1a  What is the difference between MVC & MVP  And no… I’m not referring to Microsoft’s Most Valuable Professional (of which you can find some in here)
  • 12.
    Questions I thoughtyou’d ask… #1b  What is the difference between MVC & MVP  MVC  Controller responsible for determining which view is displayed in response to any action.  The view does not directly bind to the model.  The view usually will not have any logic in the code behind.  MVP  Presenter contains the UI business logic for the view.  All actions from the view delegate to the presenter.  Tends to be a very natural pattern for achieving separated presentation in ASP.NET Web Forms.
  • 13.
    Questions I thoughtyou’d ask… #1c
  • 14.
    Questions I thoughtyou’d ask… #2  What is the DRY Principle?  It means “Don’t Repeat Yourself”, but it isn’t necessarily talking about the Copy/Paste Code Smell… that is better described by the “Once and Only Once” (OAOO) principle.  An example of something really DRY is XSLT… where knowledge is not repeated.  “The DRY code philosophy is stated as ‘Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.’” --Wikipedia
  • 15.
    Questions I thoughtyou’d ask… #3  What is the PRG Pattern?  “…instead of returning an HTML page directly, the POST operation returns a redirection command… instructing the browser to load a different page using an HTTP GET request. The result page can then safely be bookmarked or reloaded without unexpected side effects.” --Wikipedia

Editor's Notes

  • #8 1. No, MVC will not replace Web Forms. It will only be an alternative approach for web development. Don’t be fearful that your precious post-back View State model will be taken away from you ;) 2. If you have a highly intensive user experience you may want to stay with the classic Web Form approach, however, if you find yourself in a very large enterprise you may want to consider using MVC since it provides a lot of flexibility and enables unit testing…. Something very difficult to do in a Web Form environment. 3. There are many sites that already use MVC in production, however, technically the product hasn’t been released yet. It is still in Preview 5. 4. The rumor is that MVC will be released in a month that ends in “ber”. There is no official release date that I am aware of. Since the project has been hosted on CodePlex it has had the unique experience of being tested while it is being developed. The community is helping drive the direction of the product, but with that comes a flexible delivery date. It’s done when it’s done.
  • #9 This is a test note