Asp net mvc framework
This presentation is the property of its rightful owner.
Sponsored Links
1 / 46

ASP.NET MVC Framework PowerPoint PPT Presentation


  • 55 Views
  • Uploaded on
  • Presentation posted in: General

ASP.NET MVC Framework. Simone Chiaretta Solution Developer, Avanade http://codeclimber.net.nz. 24 Ottobre 2008. Agenda. Storia degli strumenti Microsoft per lo sviluppo Web Introduzione ad ASP.NET MVC Pattern MVC ASP.NET MVC nel dettaglio Testing ASP.NET MVC Futuro di ASP.NET MVC.

Download Presentation

ASP.NET MVC Framework

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Asp net mvc framework

ASP.NET MVC Framework

Simone ChiarettaSolution Developer, Avanade

http://codeclimber.net.nz

24 Ottobre 2008


Agenda

Agenda

  • Storiadeglistrumenti Microsoft per lo sviluppo Web

  • Introduzione ad ASP.NET MVC

  • Pattern MVC

  • ASP.NET MVC neldettaglio

  • Testing ASP.NET MVC

  • Futurodi ASP.NET MVC


Storia degli strumenti microsoft per lo sviluppo web

Storiadeglistrumenti Microsoft per lo sviluppo Web


Prima c era asp classic

Prima c’era ASP “Classic”


Prima c era asp classic storia

Prima c’era ASP “Classic” - Storia

ASP (‘96 – 2000, IIS3 –> )

  • Primo framework disviluppo web integratocolwebserver

  • Introduce le prime astrazioni per facilitarel’interazione con ilwebserver

    • Request

    • Response

    • Server


Prima c era asp classic problemi

Prima c’era ASP “Classic” - Problemi

  • Lasciacompletalibertà al programmatore =

    • Codice e HTML sonomischiati (“spaghetti code”)

  • Difficileseparareimplementazione e presentazione

<% Set oConn = Server.CreateObject("ADODB.Connection")

oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("DB.mdb")

Set rsUsers = Server.CreateObject("ADODB.Recordset")

rsUsers.Open "SELECT * FROM Users", oConn %>

<TABLE align="center" border="0" cellpadding="0" cellspacing="0" width="100%">

<% do while not rsUsers.eof %>

<tr>

<td><%=rsUsers.fields(0)%></td>

<td><%=rsUsers.fields(2)%></td>

</tr>

<% rs.movenext

loop %>

</table>

<% rsUsers = Nothing

oConn = Nothing %>


Poi venne asp net storia

Poi venne ASP.NET - Storia

  • Cercadirisolvereilproblemadello“spaghetti code”

  • Rilasciato Gen ‘02 con .NET 1.0

  • Permettediadottare un approccioVB6-like per lo sviluppo web.

  • Nasceilconcettodi

    WebForm


Poi venne asp net webform

Poi venne ASP.NET - WebForm


Poi venne asp net webform1

Poi venne ASP.NET - WebForm

  • Ciclodi vita dellapaginabasatosueventi

  • Programmazionebasatasueventi

  • UserControls e Control tree

  • Nasconde la natura state-less del web


Poi venne asp net caratteristiche

Poi venne ASP.NET - Caratteristiche

  • HTML e codicesono in due file distinti(code-behind):

    • .aspx: contiene HTML e webcontrols

    • .aspx.cs: contieneilcodice per manipolareiwebcontrols

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server“

<title>Sample page</title> </head> <body>

<formid="form1" runat="server"> <div>

<asp:Labelrunat="server" id="Label1" /> </div>

</form>

</body>

</html>

using System;

namespace Website

{

public partial class Page1 : System.Web.UI.Page

{

protected Label Label1;

protected void Page_Load

(object sender, EventArgs e)

{

Label1.Text = "Hello ASP.NET";

}

}

}


Poi venne asp net problemi

Poi venne ASP.NET - Problemi

Page Lifecycle

troppocomplesso


Poi venne asp net problemi1

Poi venne ASP.NET - Problemi

Troppo

codice HTML

autogenerato


Poi venne asp net problemi2

Poi venne ASP.NET - Problemi

Troppa “roba” daportare in giro:

ViewState


Poi venne asp net problemi3

Poi venne ASP.NET - Problemi

Inutilmentecomplesso


Poi venne asp net soluzione ai problemi

Poi venne ASP.NET – SoluzioneaiProblemi

  • Codicetroppoaccoppiato: pattern MVP, WCSF, MonoRail

  • HTML “brutto”: CSS Adapter Toolkit, templated controls

  • ViewState“ingombrante”: abilitarloselettivamente

Ma tuttociò non è “out-of-the-box”


Introduzione a asp net mvc

Introduzione a ASP.NET MVC


Asp net mvc to the rescue

ASP.NET MVC to the rescue

Ritornoallasemplicità


Asp net mvc to the rescue storia

ASP.NET MVC to the rescue – Storia

  • Nasce per cercaredirisolvereiproblemidi ASP.NET

  • Annunciatoda Scott Guthrie alla prima ALT.NET conference di Austin a Ott ‘07

  • Attualmente alla versione Beta (1?)(Ottobre ‘08)

  • “Obbliga” unamaggiorseparazionedelleresponsabilità


Asp net mvc caratteristiche

ASP.NET MVC – Caratteristiche

  • Implementail pattern Model-View-Controller

  • Sviluppato per esseretestabile

  • Estendibile

  • URL mapping engine

  • Puòutilizzareilmodellowebform per quelcheriguardailrendering, ma non per ilpostback

  • Supportatutte le funzionalità pre-esistenti: autenticazione, autorizzazione, caching, session, providers, ecc…


Il pattern mvc

Il Pattern MVC


Mvc in real life

MVC in Real Life

  • Consegnadella pizza

  • L’utenteparla al controller (prendel’ordine per la pizza)


Mvc in real life1

MVC in Real Life

  • Il controller delega al model (ilcuocoricevel’ordine)


Mvc in real life2

MVC in Real Life

  • Quando la pizza è pronta, viene data al controller chedelegaalla view(fattorinoporta la pizza a casa)


Introduzione a mvc

Introduzione a MVC

  • Introdotto per la prima volta in Smalltalk nel ‘79

  • “Di moda” negliultimianni grazie a Struts, Spring MVC e Ruby on Rails

  • Divide l’applicazione in 3 componenti:

    • Model: la business logic dell’applicazione, checontiene le informazioni sui dati

    • View: rappresentaidatinella UI visibiledall’utente

    • Controller: orchestra le operazioni, ricevel’input, decide come recuperareidati e lipassaalla view


Il flusso di un applicazione mvc

Il flussodiun’applicazione MVC

Il Controller chiedeidati al Model

La richiestaarriva al controller

Model

2

1

3

Browser

Controller

Il Model restituisceidati al controller

Il controller formattaidati e lipassaalla view

4

View

5

La view costriusce la paginachevieneinivata al browser


Asp net mvc nel dettaglio

ASP.NET MVC neldettaglio

[with Demo]


Flusso della richiesta

Flussodellarichiesta


Routing

Routing

  • Parte di ASP.NET 3.5 SP1

    • System.Web.Routing.dll

  • Url con parametri:

    • {controller}, {action}, {parametri}

routes.MapRoute(

"Blog",//nome

"blog/{date}/{title}", //url

/*valori di default per i parametri*/

new {

controller = "Blog",//Controller

action = "Show",//Action

date = DateTime.Now,//Parametri

title = ""

}

);


Controller

Controller

  • Classe con nome<NomeController>Controller

  • EreditadaController

  • Un metodopubblico per Action

  • MetodorestituisceActionResult

public classBlogController: Controller

{

public ActionResult Show(DateTime date, string title)

{

ViewData["Titolo"] = title;

ViewData["Data"] = date;

returnView();

//returnView(“<viewName>", <viewdata>);

}

}


View loosely typed

View – Loosely Typed

  • E’ un normaleWebFormcheereditadaViewPage

  • DEVE SOLOcostruire la UI HTML

  • ViewData è +/- unaHashTable

public partial class Show : ViewPage

{

//quasi sempre vuoto

}

<h2><%= Html.Encode(ViewData["Message"]) %></h2>

<%= ((DateTime)ViewData["Data"]).ToLongDateString()%>


View strongly typed

View – Strongly Typed

  • La view puòancheessere strongly typed

    • Complie time check

    • Intellisense friendly 

  • ViewData è unaclasse custom

  • public partial class StrongShow : ViewPage<PresentationModelClass>

    {

    //quasi sempre vuoto

    }

    <h2><%= Html.Encode(ViewData.Model.Message) %></h2>

    <%= ViewData.Model.Data.ToLongDateString()%>


    View ui helpers

    View – UI Helpers

    • UI Helper per aiutare la scritturadicodice HTML

      • Html.ActionLink

      • Html.ActionLink<ControllerClass>

      • Html.BeginForm

      • Html.BeginForm<ControllerClass>

    Html.ActionLink(“TestoLink",“ActionName",“Controller", new { parametri });

    Html.ActionLink<ControllerClass>( c => c.ActionName(parametri),"Testo Link");


    Estendere mvc

    Estendere MVC

    • Tuttopuòessereesteso

      • IControllerFactory

        • StructureMapControllerFactory

        • UnityControllerFactory

        • SpringControllerFactory

      • IViewFactory

        • BooViewEngine

        • NHamlViewFactory

    • Quasi tutte le integazionisonosviluppateall’internodiMVCContrib: http://www.codeplex.com/MVCContrib


    Testare asp net mvc

    Testare ASP.NET MVC

    [with Demo]


    Testare asp net mvc1

    Testare ASP.NET MVC

    Ma questa non avrebbedovutoessere la prima slide?


    Testare i controller

    Testarei controller

    • No mocking involved

    [TestClass]

    public classBlogControllerTest

    {

    [TestMethod]

    public void Show()

    {

    BlogController controller = newBlogController();

    var result = controller.Show(2010,10,11,"Titolo Post")

    as RenderViewResult;

    Assert.IsNotNull(result, "Aspettavo un view da renderizzare");

    Assert.AreEqual("Titolo Post", result.ViewData["Titolo"],

    "Mi aspettavo un altro messaggio");

    }

    }


    Altri esempi di test

    Altriesempidi test

    • Testarestrongly-typed view data

      • Assert.AreEqual(expected, ((BlogModel)result.ViewData.Model).Titolo,…);

    • Testare Redirect

      • var result = controller.Show(…) as RedirectToRouteResult;


    Wrapping up

    Wrapping up…


    Asp net mvc vs webforms

    ASP.NET MVC vsWebForms

    • WebForms

      • Sviluppo RAD

      • Paradigmapiù simile allosviluppotradizionale client-side

      • Ottimo per “prototipare”

      • Puòdiventareinmantenibile

    • ASP.NET MVC

      • Piùcodicedascrivere

      • “Miglior” architetturadell’applicazione

      • Maggiorcontrollosu HTML

      • Abilitausodimetodologie Agile


    Stato di asp net mvc

    Statodi ASP.NET MVC

    • Orasiamoalla Beta

    • RTW rilasciata in un mesechefinisce in “ember” (Januray-ember?)

    • Routing ormai “stabile” (parte di ASP.NET 3.5 SP1)


    Conclusioni

    Conclusioni

    • ASP.NET MVC è un framework checipermettediscriverebuon software by default

    • ASP.NET WebFormnecessitadi “lavoro” per raggiungere lo stessolivellodipulizia

    • ASP.NET MVC non è ASP.NET 4.0

      • è un’alternativa, non un sostituto


    Risorse

    Risorse

    • http://asp.net/mvc/ - Sitoufficiale, con download Beta, sample, video, ecc.

    • http://www.codeplex.com/aspnet - Codicesorgente

    • http://del.icio.us/tag/aspnetmvc - tuttigliarticolisu ASP.NET MVC

    • http://polymorphicpodcast.com/shows/mvcresources/ - lista “commentata” dirisorse

    • Blog di MS

      • ScottGu: http://weblogs.asp.net/scottgu/default.aspx

      • ScottHa: http://www.hanselman.com/blog/

      • PhilHa: http://haacked.com/


    Beginning asp net mvc

    Beginning ASP.NET MVC

    • Simone Chiaretta e Keyvan Nayyeri

    • Rilascio: Marzo 2009

    • Già in prevendita su Amazon

    • TOC:

      • MVC

      • Testing

      • And more...

    • http://www.amazon.co.uk/Beginning-ASP-NET-MVC-Simone-Chiaretta/dp/047043399X/


    Fun stuff

    Fun stuff

    • The MVC Song:

      • http://www.railsenvy.com/assets/2008/6/3/mvc_song.mp3

    • MVC Public Service Announcement Videos

      • http://www.railsenvy.com/2008/6/3/mvc-videos

      • http://www.vimeo.com/album/15216


    Contatti simone chiaretta

    Contatti – Simone Chiaretta

    • MSN: [email protected]

    • Blog:

      • English: http://codeclimber.net.nz/

      • Italiano: http://blogs.ugidotnet.org/piyo/

    • Twitter: http://twitter.com/simonech


    Asp net mvc framework

    Q&A


  • Login