Venketash (Pat) Ramadass
Systems Architect & Managing Director
emediaIT
pat.ramadass@emediait.com
http://patramadass.emedi...
Separation of Concerns


    MVC


    ASP.NET MVC


    Demonstrations of building simple ASP.NET

    MVC functional...
Presentation logic, business logic and data

    access logic are mixed together too often
     Business logic code with...
Stands for Model-View-Controller


    It is a design pattern for software development


    Designed to promote and enf...
User
User Interface           Generates Events




   View(s)                 Controller(s)




Provides Data             ...
MVC Framework which Microsoft is adding to

    ASP.NET

    Alternative to ASP.NET, not a replacement



    Can combin...
Clear separation of concerns (SoC)



    Testability - support for TDD



    Fine-grained control over HTML and

    ...
Functionality                                           Webforms                          ASP.NET MVC
URLs                ...
6




                                                                                       View
                        ...
Creating a new MVC Project


    Folder Structure


    Sample application included in ASP.NET MVC

    Application Tem...
URL: /Product/Details/3

     This URL is parsed into three parts like this:
      ▪ Controller = ProductController
    ...
Default Route

     Default Controller: HomeController
     Default Action: Index
     Default Id: Empty String

    U...
Default Route

     Default Controller: HomeController
     Default Action: Index
     Default Id: Empty String


    ...
In a blog application, you may want to handle

    incoming requests that look like: /Archive/12-
    25-2009. For this y...
A controller should only contain the bare minimum of logic

    required to return the right view or redirect the user to...
A method used as a controller action cannot be overloaded or static


    A controller action returns action result.


 ...
Instead of returning an action result directly, you

    normally call one of the following methods on
    the Controller...
Modifying ActionResult

A view should contain only logic related to generating the user

    interface.
    A view contains the HTML markup and c...
Adding a new View Page



    Using HTML Helpers to Generate View

    Content

    Using View Data to Pass Data to a Vi...
An MVC model contains all of your

    application logic that is not contained in a
    view or a controller. This should...
Create a new Database



    Create a new Model



    Using LINQ in Controller Actions



    Using the Repository Pat...
Why TDD?



    Testing the View returned by a Controller



    Testing the View Data returned by a

    Controller

 ...
ASP.NET 3.5 Installed



    Visual Studio 2008



    Microsoft ASP.NET MVC Installed

     Download the current Beta
ASP.NET 3.5 Installed



    Visual Studio 2008



    Microsoft ASP.NET MVC Installed

     Download the current Beta
More Involved Examples

     Add/Edit/Delete and use of Server Controls
      ▪ Email me if you would like information o...
Using Partials as Templates for formatting/rendering

     For example a template for how a Movie is rendered
     HTML...
Upgrading existing code will take a long time, better

    for Greenfields projects
    For now, applications which requi...
If you are developing a new system it is worth

    evaluating the pros and cons, it is not a silver
    bullet however
 ...
http://www.asp.net/mvc/

       Official Site

    http://weblogs.asp.net/scottgu

       Scott Guthrie

    http://ww...
ASP.NET MVC - Whats The Big Deal
ASP.NET MVC - Whats The Big Deal
Upcoming SlideShare
Loading in...5
×

ASP.NET MVC - Whats The Big Deal

4,106

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,106
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

ASP.NET MVC - Whats The Big Deal

  1. 1. Venketash (Pat) Ramadass Systems Architect & Managing Director emediaIT pat.ramadass@emediait.com http://patramadass.emediait.com
  2. 2. Separation of Concerns  MVC  ASP.NET MVC  Demonstrations of building simple ASP.NET  MVC functionality Questions 
  3. 3. Presentation logic, business logic and data  access logic are mixed together too often  Business logic code within the User Interface  Unmanagable code, goes against good OO principles Proper Separation of Concerns (SoC) solves  this by de-coupling the overall architecture
  4. 4. Stands for Model-View-Controller  It is a design pattern for software development  Designed to promote and enforce Separation  of Concerns  Model – Data Access and Business Logic  View – User Interface  Controller – Handles User Interaction and Model Manipulation
  5. 5. User User Interface Generates Events View(s) Controller(s) Provides Data Manipulates Model
  6. 6. MVC Framework which Microsoft is adding to  ASP.NET Alternative to ASP.NET, not a replacement  Can combine both in a single solution  Currently in public beta, but there are  production systems using it already
  7. 7. Clear separation of concerns (SoC)  Testability - support for TDD  Fine-grained control over HTML and  JavaScript Intuitive URLs (Routing) – SEO Friendly 
  8. 8. Functionality Webforms ASP.NET MVC URLs Page names and URL Routing Programmatically - Rewriting REST Event Driven Yes No Stateful Yes (Viewstate) No Easily Unit Tested No Yes Abstraction from HTML Yes No Exact control over HTML No Yes Supports ORM Yes Yes Easy use of Third Party UI Yes Partial (No state/postback controls controls only) Works on Linux/Mono Yes (Partial) Not yet supported, but can be made to work The above is not intended to be a complete list, it simply highlights some key differences.
  9. 9. 6 View Routing Controller 1 2 5 Rules 3 1. HTTP Request 2. ASP.NET MVC Framework evaluates URL against registered Routing Rules and forwards the request to a matching Controller Model Data Store 4 3. Controller calls Model to build ViewData, if required 4. The Model returns the requested Data to the Controller 5. The Controller selects a View and passes the Model to the View 6. View renders and returns HTTP Response
  10. 10. Creating a new MVC Project  Folder Structure  Sample application included in ASP.NET MVC  Application Template A URL does not equal a page  Understanding URL Routing 
  11. 11. URL: /Product/Details/3   This URL is parsed into three parts like this: ▪ Controller = ProductController ▪ Action = Details ▪ Id = 3  The request is therefore routed to the Details() action on the ProductController class, with a Id parameter of 3  Notice that the suffix Controller is tacked on to the end of the Controller parameter.
  12. 12. Default Route   Default Controller: HomeController  Default Action: Index  Default Id: Empty String URL: /Employee   This URL is parsed into three parts like this: ▪ Controller = EmployeeController ▪ Action = Index ▪ Id = “”  The request is therefore routed to the Index() action on the EmployeeController class
  13. 13. Default Route   Default Controller: HomeController  Default Action: Index  Default Id: Empty String URL: http://localhost, i.e. Without supplying a  further URL
  14. 14. In a blog application, you may want to handle  incoming requests that look like: /Archive/12- 25-2009. For this you would need a Custom Route. The order in which routes are added is  important
  15. 15. A controller should only contain the bare minimum of logic  required to return the right view or redirect the user to another action. A controller is just a Class, inherits from  System.Web.Mvc.Controller HomeController.cs has 2 methods called Index() and About(),  these are the actions it exposes. The URL /Home/Index invokes the HomeController.Index()  method and the URL /Home/About invokes the HomeController.About() method. Any public method in a controller is exposed as a controller  action.
  16. 16. A method used as a controller action cannot be overloaded or static  A controller action returns action result.  Six standard types of action results:   ViewResult – Represents HTML and markup.  EmptyResult – Represents no result.  RedirectResult – Represents a redirection to a new URL.  RedirectToRouteResult – Represents a redirection to a new controller action.  JsonResult – Represents a JavaScript Object Notation result that can be used in an AJAX application.  ContentResult – Represents a text result. ContentResult is useful for returning plain text such as dates, integers etc 
  17. 17. Instead of returning an action result directly, you  normally call one of the following methods on the Controller base class:  View – Returns a ViewResult action result.  Redirect – Returns a RedirectResult action result.  RedirectToAction – Returns a RedirectToRouteResult action result.  RedirectToRoute – Returns a RedirectToRouteResult action result.  Json – Returns a JsonResult action result.  Content – Returns a ContentResult action result.
  18. 18. Modifying ActionResult 
  19. 19. A view should contain only logic related to generating the user  interface. A view contains the HTML markup and content that is sent to the  browser. A view is the equivalent of a page. In general, to return a view for a controller action, you must create  a subfolder in the Views folder with the same name as your controller. Within the subfolder, you must create an .aspx file with the same name as the controller action. The HomeController.Index() action returns a view located at the  following path: ViewsHomeIndex.aspx The HomeController.About() action returns a view located at the  following path: ViewsHomeAbout.aspx
  20. 20. Adding a new View Page  Using HTML Helpers to Generate View  Content Using View Data to Pass Data to a View 
  21. 21. An MVC model contains all of your  application logic that is not contained in a view or a controller. This should be all of your business logic and data access logic Aim for fat models and skinny controllers 
  22. 22. Create a new Database  Create a new Model  Using LINQ in Controller Actions  Using the Repository Pattern 
  23. 23. Why TDD?  Testing the View returned by a Controller  Testing the View Data returned by a  Controller Testing the Action Result returned by a  Controller
  24. 24. ASP.NET 3.5 Installed  Visual Studio 2008  Microsoft ASP.NET MVC Installed   Download the current Beta
  25. 25. ASP.NET 3.5 Installed  Visual Studio 2008  Microsoft ASP.NET MVC Installed   Download the current Beta
  26. 26. More Involved Examples   Add/Edit/Delete and use of Server Controls ▪ Email me if you would like information on this Custom HTML Helpers   You can create your own Helper Classes and Extension Methods which return formatted HTML strings Unity Dependency Injection / IoC Container   Framework for Dependency Injection and Controller Factories  Stand alone version and bundled with Enterprise Library 4.0
  27. 27. Using Partials as Templates for formatting/rendering   For example a template for how a Movie is rendered  HTML.RenderPartial(string partialViewName, object Model) Action Filters   Attributes that can be applied to a Controller Action or entire Controller ▪ Authorization ▪ Action Result ▪ Exception ▪ Custom  For example for Logging/Tracing
  28. 28. Upgrading existing code will take a long time, better  for Greenfields projects For now, applications which require richer user  interfaces will require more work with MVC  Third party UI library vendors have started developing and releasing updated controls Some SEO issues, may require URL rewrite engine,  but can be done Not officially supported on pre Windows Server  2003/IIS 6, but can work
  29. 29. If you are developing a new system it is worth  evaluating the pros and cons, it is not a silver bullet however ASP.NET MVC is much more in line with what is  happening elsewhere in the industry, for example Ruby on Rails We feel that the Pros outweigh the Cons in  general and are implementing ASP.NET MVC in our new Web Applications wherever possible
  30. 30. http://www.asp.net/mvc/   Official Site http://weblogs.asp.net/scottgu   Scott Guthrie http://www.hanselman.com/   Scott Hanselman http://quickstarts.asp.net/previews/mvc   Videos, Examples, Blogs http://martinfowler.com/articles/injection.html   Repository/Dependency Injection Pattern http://www.pnpguidance.net/Category/Unity.aspx   Unity http://patramadass.emediait.com   This presentation, example code

×