ASP.NET MVC Framework - PowerPoint PPT Presentation

Asp net mvc framework
Download
1 / 46

  • 109 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.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

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: simone_ch@hotmail.com

    • Blog:

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

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

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


    Asp net mvc framework

    Q&A


  • Login