Who the hell am I? Simone Chiaretta Lavoro per Avanade Italy

Slides:



Advertisements
Presentazioni simili
Introduzione a Windows Communication Foundation
Advertisements

Active Server Pages ed ADO. Scrivere ASP Le pagine ASP possono contenere codice HTML o XML Le parti del documento che racchiudono codice script vanno.
Visual Studio Tools For Office 2005 Fabio Santini. NET Senior Developer Evangelist Microsoft Italy.
Crea il tuo sito con Web Matrix e il Web Hosting su ASP.NET
Consumare Web Service Andrea Saltarello
Fabio Mignani Senior Technology Specialist
Sharepoint Gabriele Castellani
ASP.NET – Data Binding Davide Vernole .NET MVP.
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
Mobile.istat.it Dietro le quinte Paolo Di Domenico
Andrea Firpo – Voice XML: un linguaggio per la definizione di interazioni vocali 1 Voice XML: Un linguaggio per la definizione di interazioni vocali.
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Motore di news per portali Web: progetto ed implementazione Relatore: Chiar.mo Prof. Sonia Bergamaschi Tesi di Laurea di: Roberto Delfini Anno Accademico.
Università degli Studi di Modena e Reggio Emilia
Accessibilità: primi passi per un mondo fruibile da tutti User Group.NET delle Marche 3° Workshop DotNetMarche.
Microsoft Days - Community After Hour Silverlight in Action User Group.NET delle Marche 8° Workshop DotNetMarche.
Tra presente e futuro delle interfacce utente con WPF e MVVM
Workflow Foundation (WF) & CardSpace User Group.NET delle Marche 5° Workshop DotNetMarche Giovedì 27 settembre.
Applicazioni SOA con Silverlight: dal design al deploy ° Workshop Venerdì 16 Luglio 2010.
Community Tour User Group.NET delle Marche 12° Workshop DotNetMarche Venerdì 18 dicembre 2009.
Refactoring 2TheMax (con ReSharper) User Group.NET delle Marche 11° Workshop DotNetMarche Venerdì 9 ottobre.
JQuery in Action on.NET Framework User Group.NET delle Marche 9° Workshop DotNetMarche Venerdì 27 marzo 2009.
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Prof. Ing. Franco Accattatis
Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Utilizzo di ASP.NET.
Elaborazione di Franco Grivet Chin
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net Web Part e controlli di login Elaborazione di Franco Grivet Chin.
Introduzione ad ASP.net
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net View State e controlli Elaborazione di Franco Grivet Chin.
Progettare siti con ASP.net
C# LE BASI 2007 Prima lezione - Introduzione.
UGIALT.NET Conference II
ASP.NET Dynamic Data Andrea Dottor – Microsoft MVP ASP/ASP.NET.
ASP.NET MVC Framework Simone Chiaretta Solution Developer, Avanade 27 Giugno 2008.
Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema – Secondo livello Terzo livello – Quarto livello » Quinto.
Server Web in una rete Windows Sommario Meccanismi di accesso remoto Meccanismi di accesso remoto Introduzione ai Server Web Introduzione ai Server.
Common Gateway Interface. Dynamic HTML le risposte inviate al client sono (parzialmente o totalmente) create on-the-fly (al volo) dopo aver ricevuto il.
Sviluppo Web Agile con Castle MonoRail Diego Guidi DotNetMarche.Start() 12 ottobre 2006.
Visual Studio Team System User Group.NET delle Marche 10° Workshop DotNetMarche Mercoledì 13 maggio 2009.
ASP.NET MVC Framework Componentizzazione Simone Chiaretta Solution Developer, Avanade 27 Giugno 2009.
ASP.NET MVC Framework Simone Chiaretta Solution Developer, Avanade 24 Ottobre 2008.
ASP.NET MVC Framework SO WHAT? Simone Chiaretta Solution Developer, Avanade 3 Aprile 2009.
ASP.NET MVC Best Practices Simone Chiaretta Solution Developer, Avanade 21 Ottobre 2009.
Chi siamo Simone Chiaretta Davide Vosti Lavora per Avanade Italy
ASP.NET per il client web Alessandro Forte Audaces.NET iuvat (.NET aiuta gli audaci )
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Insegnamento “Tecniche audiovisive” Corso di Laurea in Ingegneria delle Comunicazioni Symbian Marco Teodori Assistente Ricercatore - Fondazione Ugo Bordoni.
JavaScript Programmare il client. Cenni storici Alice Pavarani2  Nasce nel 1995 (Netscape): da LiveScript a JavaScript  La risposta di Microsoft: Jscript.
ASP.NET. …un po’ di ASP ASP (Active Server Pages) è una tecnologia Microsoft che consente di scrivere codice eseguibile (script) lato server, inserendo.
INTRODUZIONE A JAVASCRIPT
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Lezione 8.
Inside outlook EDIFACT Framework Architecture
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Progetto esame Tecnologie Web Anno: 2014 A cura di: Salvatore Giovanni De Vivo Matricola: Strumenti utilizzati: XHTML, ASP.NET, C#.
Universal App – Sviluppo di App per Windows Store Gianluca Bertelli
ASP.NET – Autenticazione e Sicurezza basata sui ruoli
Real World data access layers DataSet vs. Custom entities Pierre Greborio Software Architect – PEWay SrL Microsoft MVP – Solutions Architect.
Sviluppo per Pocket PC con SQL Server CE 2.0 Fabio Santini Silvano Coriani.NET Developer Evangelist Microsoft Corporation.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Utilizzo base di Altervista. AlterVista AlterVista è una piattaforma web dove è possibile aprire gratuitamente un sito web, un blog Per aprire gratuitamente.
PHP.  HTML (Hyper Text Markup Language)  CSS (Cascading Style Sheets)  Javascript (linguaggio di programmazione client)  PHP ( Hypertext Preprocessor.
Da GitHub a NuGet con la nuova build di Visual Studio Online Davide Benvegnù Managing Director & CTO – DBTek Ltd Microsoft MVP Visual Studio
.NET vNext e lo sviluppo web cross-platform
Davide Benvegnù Integrazione con Visual Studio Online #VSOAPI.

Paradigma MVC Ing. Buttolo Marco.
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
Free .NET Hosting - somee.com
Transcript della presentazione:

ASP.NET MVC Framework Simone Chiaretta Solution Developer, Avanade http://codeclimber.net.nz 3 Aprile 2009

Who the hell am I? Simone Chiaretta Lavoro per Avanade Italy Microsoft MVP ASP.NET Blogger – http://codeclimber.net.nz Fondatore di UGIALT.NET OpenSource developer Climber All Around Nice Guy

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

Storia degli strumenti Microsoft per lo sviluppo Web

Prima c’era ASP “Classic”

Prima c’era ASP “Classic” - Storia ASP (‘96 – 2000, IIS3 –> ) Primo framework di sviluppo web integrato col webserver Introduce le prime astrazioni per facilitare l’interazione con il webserver Request Response Server

Prima c’era ASP “Classic” - Problemi Lascia completa libertà al programmatore = Codice e HTML sono mischiati (“spaghetti code”) Difficile separare implementazione 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 Cerca di risolvere il problema dello “spaghetti code” Rilasciato Gen ‘02 con .NET 1.0 Permette di adottare un approccio VB6-like per lo sviluppo web. Nasce il concetto di WebForm

Poi venne ASP.NET - WebForm

Poi venne ASP.NET - WebForm Ciclo di vita della pagina basato su eventi Programmazione basata su eventi UserControls e Control tree Nasconde la natura state-less del web

Poi venne ASP.NET - Caratteristiche HTML e codice sono in due file distinti (code-behind): .aspx: contiene HTML e webcontrols .aspx.cs: contiene il codice per manipolare i webcontrols <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server“ <title>Sample page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label runat="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 Page Lifecycle troppo complesso Eventi – codice troppo accoppiato con il ciclo di vita della pagina: difficile da testare difficile separare le responsabilità UserControl – Codice HTML è “autogenerato” e poco contollabile: HTML poco semantico HTML non necessariamente accessibile Difficile usare javascript a causa degli ID autogenerati ViewState – 50% (o più) della pagina è viewstate Non sempre è necessario salvare il viewstate di tutti i controlli.

Poi venne ASP.NET - Problemi Troppo codice HTML autogenerato

Poi venne ASP.NET - Problemi Troppa “roba” da portare in giro: ViewState

Poi venne ASP.NET - Problemi Inutilmente complesso

Poi venne ASP.NET – Soluzione ai Problemi Codice troppo accoppiato: pattern MVP, WCSF, MonoRail HTML “brutto”: CSS Adapter Toolkit, templated controls ViewState “ingombrante”: abilitarlo selettivamente Ma tutto ciò non è “out-of-the-box” Ma tutto ciò non è “out-of-the-box”: l’80% degli sviluppatori continua ad utilizzare l’approccio di default.

Introduzione a ASP.NET MVC

ASP.NET MVC to the rescue Ritorno alla semplicità

ASP.NET MVC to the rescue – Storia Nasce per cercare di risolvere i problemi di ASP.NET Annunciato da Scott Guthrie alla prima ALT.NET conference di Austin a Ott ‘07 Attualmente alla versione 1.0 (MIX09) “Obbliga” una maggior separazione delle responsabilità

ASP.NET MVC – Caratteristiche Implementa il pattern Model-View-Controller Sviluppato per essere testabile Estendibile URL mapping engine Può utilizzare il modello webform per quel che riguarda il rendering, ma non per il postback Supporta tutte le funzionalità pre-esistenti: autenticazione, autorizzazione, caching, session, providers, ecc… Implementa il pattern Model-View-Controller Sviluppato per essere testabile (tutti gli oggetti Http sono visti tramite delle interfacce, es IHttpRequest) Estendibile: ogni componente può essere rimpiazzato da implementazioni custom URL mapping engine: permette URL SEO-friendly, RESTful e “hackable” (Products/Category/4 invece che productscategory.aspx?id=4) Utilizza il modello webform per quel che riguarda il rendering, ma non per il postback Supporta tutte le funzionalità pre-esistenti: autenticazione, autorizzazione, caching, session, providers, ecc…

Il Pattern MVC

MVC in Real Life Consegna della pizza L’utente parla al controller (prende l’ordine per la pizza)

MVC in Real Life Il controller delega al model (il cuoco “realizza” l’ordine)

MVC in Real Life Quando la pizza è pronta, viene data al controller che delega alla view (fattorino porta la pizza a casa)

Introduzione a MVC Introdotto per la prima volta in Smalltalk nel ‘79 “Di moda” negli ultimi anni grazie a Struts, Spring MVC e Ruby on Rails Divide l’applicazione in 3 componenti: Model: la business logic dell’applicazione, che contiene le informazioni sui dati View: rappresenta i dati nella UI visibile dall’utente Controller: orchestra le operazioni, riceve l’input, decide come recuperare i dati e li passa alla view

Il flusso di un’applicazione MVC Il Controller chiede i dati al Model La richiesta arriva al controller Model 2 1 3 Browser Controller Il Model restituisce i dati al controller Il controller formatta i dati e li passa alla view 4 View 5 La view costriusce la pagina che viene inivata al browser

ASP.NET MVC nel dettaglio [with Demo]

Flusso della richiesta Request URL Routing Route Route Handler Http Handler Controller View Factory View Response

Routing Parte di ASP.NET 3.5 SP1 Url con parametri: 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 Classe con nome <NomeController>Controller Eredita da Controller Un metodo pubblico per Action Metodo restituisce ActionResult public class BlogController : Controller { public ActionResult Show(DateTime date, string title) ViewData["Titolo"] = title; ViewData["Data"] = date; return View(); //return View(“<viewName>", <viewdata>); }

DEVE SOLO costruire la UI HTML View – Loosely Typed E’ un normale WebForm che eredita da ViewPage DEVE SOLO costruire la UI HTML ViewData è +/- una HashTable Non c’è “code-behind” <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> <h2><%= Html.Encode(ViewData["Message"]) %></h2> <%= ((DateTime)ViewData["Data"]).ToLongDateString()%>

View – Strongly Typed La view può anche essere strongly typed Complie-time check Intellisense friendly  ViewData è una classe custom <%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<Post>" %> <h2><%= Html.Encode(Model.Message) %></h2> <%= Model.Data.ToLongDateString()%>

View – UI Helpers UI Helper per aiutare la scrittura di codice HTML Html.ActionLink Html.ActionLink<ControllerClass> Html.BeginForm Html.BeginForm<ControllerClass> Html.ActionLink(“Testo Link",“ActionName",“Controller", new { parametri });

Estendere MVC Tutto può essere esteso IControllerFactory StructureMapControllerFactory UnityControllerFactory SpringControllerFactory … IViewFactory BooViewEngine NHamlViewFactory Quasi tutte le integazioni sono sviluppate all’interno di MVCContrib: http://www.codeplex.com/MVCContrib

Testare ASP.NET MVC [with Demo]

Ma questa non avrebbe dovuto essere la prima slide? Testare ASP.NET MVC Ma questa non avrebbe dovuto essere la prima slide? 

Testare i controller No mocking involved [TestClass] public class BlogControllerTest { [TestMethod] public void Show() BlogController controller = new BlogController(); 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 Testare strongly-typed view data Testare Redirect Assert.AreEqual(expected, ((BlogModel)result.ViewData.Model).Titolo,…); Testare Redirect var result = controller.Show(…) as RedirectToRouteResult;

Wrapping up…

Stato di ASP.NET MVC Rilasciato con licenza OpenSource MS-PL Versione 1.0 rilasciata da qualche settimana Versione 2.0 con ASP.NET 4.0 Futures disponibili su CodePlex

Conclusioni ASP.NET MVC è un framework che ci permette di scrivere buon software by default ASP.NET WebForm necessita di “lavoro” per raggiungere lo stesso livello di pulizia ASP.NET MVC non è ASP.NET 4.0 è un’alternativa, non un sostituto

Risorse http://asp.net/mvc/ - Sito ufficiale, con download Beta, sample, video, ecc. http://www.codeplex.com/aspnet - Codice sorgente http://del.icio.us/tag/aspnetmvc - tutti gli articoli su ASP.NET MVC http://polymorphicpodcast.com/shows/mvcresources/ - lista “commentata” di risorse 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 Simone Chiaretta e Keyvan Nayyeri Rilascio: Luglio 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 The MVC Song: MVC Public Service Announcement Videos 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 MSN: simone_ch@hotmail.com Blog: English: http://codeclimber.net.nz/ Italiano: http://blogs.ugidotnet.org/piyo/ Twitter: http://twitter.com/simonech

Q&A