Asp.NET MVC è un nuovo framework per lo sviluppo di applicazioni web alternativo al modello webform. Questo consente di utilizzare il pattern MVC per lo sviluppo di applicazioni Asp.NET, permettendo quindi una miglior separazione delle responsabilità che a sua volta porta ad una maggior manutenibilità, riusabilità e facilità nel testing.
La sessione illustrerà i motivi che hanno portato alla nascita di Asp.NET MVC e le sue caratteristiche fondamentali.
Agenda:
- Storia dei framework MS per lo sviluppo web
- Introduzione a Asp.NET MVC
- Vantaggi di Asp.NET MVC
- Il pattern MVC
- Hello MVC: DEMO
- Componenti di MVC: Routing, Controller, Model, View
Cosa c'è di nuovo in asp.net core 2 0Andrea DottorASP.NET Core 2.0 è stato ufficialmente rilasciato e porta con se parecchie novità come le Razor Pages, template aggiornati e l'integrazione con Application Insights migliorata. In questa cercheremo capiremo la vera maturità di questo framework, e quanto questo rilascio sia importante per noi dev.
Asp.net web form 4.5 - what's new!!Massimo Bonanniݺߣ della sessione "ASP.NET Web Form 4.5: what's new!!!" tenuta da Massimo Bonanni all'evento "Web@Work" di DomusDotNet il 14 Dicembre 2012
ASP.NET Core - Razor PagesAndrea DottorNon stiamo parlando di un ritorno a WebForm ma di un'evoluzione (o meglio) di un'alternativa al pattern MVC. Le Razor Pages possono essere un buon motore per smuovere le migrazioni di vecchie applicazioni, utilizzando un paradigma di pagina (vicino a quello che chi utilizza WebForm già conosce) ma con una visione e pulizia degna delle migliori applicazioni MVC .
Ecco che le Razor Pages si stanno ritagliano il loro spazio, ed in questa sessione cercheremo di affrontare i pro e contro del loro utilizzo, capendone al meglio i casi duso ideali.
Customize ASP.NET Core scaffoldingAndrea Dottorݺߣ della sessione che ho tenuto alla Unconference del XE One Day:
http://www.xedotnet.org/eventi/one-day-performance-optimization/
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaMarco Breveglieriݺߣ del seminario sull'uso di React con Delphi e confronto con altre tecnologie (es. ExtJS) per lo sviluppo Web, tenuto al Delphi Day 2016 a Piacenza.
I sorgenti sono disponibili qui:
https://github.com/marcobreveglieri/conferences/tree/master/2016/delphi_day_2016
Blazor per uno sviluppatore Web FormAndrea DottorIn questa sessione vedremo come uno sviluppatore WebForm possa essere velocemente produttivo (utilizzando le ultime versioni di ASP.NET Core) grazie a Blazor. Vedremo quindi cosa differenza un'applicazione ASP.NET Core, rispetto a quelle WebForm (.NET Framework) fino ad arrivare a comprendere perchè e come Blazor possa agevolare questa transizione.
Quindi una sessione non solo per chi è nuovo a Blazor, ma anche perchì ancora non ha migrato ad ASP.NET Core.
Selenium e testing web - di Alessio BenedettiGiuneco S.r.lSelenium framework: Selenium è un framework open-source per l'automazione e il testing di applicazioni web che permette di controllare in remoto le istanze del browser ed emulare l'interazione di un utente.
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.lBlazor è un framework per la creazione di Single Page Application (SPA) tramite l’utilizzo di C#.
Creato da Steve Sanderson e successivamente inserito in .NET Core come esperimento.
Visto l’enorme successo avuto sulla community è stato poi deciso di renderlo parte integrante dell’ecosistema .NET
Offre tutti i vantaggi di un framework front-end scrivendo codice interamente in C#.
Creare API pubbliche, come evitare gli errori comuniAndrea Dottorݺߣ dell'evento tenuto il 06.07.2017 http://www.xedotnet.org/eventi/javascript-da-0-a-es6-api-rest/
Applicazioni Web ultra-performanti con Vue.js e DelphiMarco BreveglieriVue.js è un framework per creare interfacce utente estremamente performanti e che può essere introdotto progressivamente nelle vostre applicazioni Web, nel modo meno invasivo possibile. In questo talk scoprirete come utilizzarlo con Delphi creando una soluzione frontend e backend ad elevate prestazioni.
ASP.NET MVC 3 - Trasportare i dati nel ModelManuel ScapolanIl model consente di trasportare le informazioni dal controller alla vista e viceversa, facciamoci aiutare dallo Scaffolding e dagli HtmlHelper
Let's Go MobileSundin AssociatesNorthern Bank & Trust Company has quietly served local customers in Massachusetts for over 50 years. While other banks promote themselves, Northern focuses on serving customers and has earned loyalty through prudent practices. Northern has received top ratings and awards, including a 4-star rating from Bauer Financial and being named one of America's top three community banks. Northern puts customers first and invites area residents to discover their local bank.
Staying on top of socialSundin AssociatesFacebook, Instagram, Twitter, Snapchat – it’s hard enough to figure out how (or if) we want to use these new tools to maintain our own personal connections. But how do we keep up with the kids? During this session we will look at real life examples of how thoughtless moments online has had lasting impacts on children and adults, as well as discuss ways to stay connected to and tuned in to what our children are doing online.
Customize ASP.NET Core scaffoldingAndrea Dottorݺߣ della sessione che ho tenuto alla Unconference del XE One Day:
http://www.xedotnet.org/eventi/one-day-performance-optimization/
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaMarco Breveglieriݺߣ del seminario sull'uso di React con Delphi e confronto con altre tecnologie (es. ExtJS) per lo sviluppo Web, tenuto al Delphi Day 2016 a Piacenza.
I sorgenti sono disponibili qui:
https://github.com/marcobreveglieri/conferences/tree/master/2016/delphi_day_2016
Blazor per uno sviluppatore Web FormAndrea DottorIn questa sessione vedremo come uno sviluppatore WebForm possa essere velocemente produttivo (utilizzando le ultime versioni di ASP.NET Core) grazie a Blazor. Vedremo quindi cosa differenza un'applicazione ASP.NET Core, rispetto a quelle WebForm (.NET Framework) fino ad arrivare a comprendere perchè e come Blazor possa agevolare questa transizione.
Quindi una sessione non solo per chi è nuovo a Blazor, ma anche perchì ancora non ha migrato ad ASP.NET Core.
Selenium e testing web - di Alessio BenedettiGiuneco S.r.lSelenium framework: Selenium è un framework open-source per l'automazione e il testing di applicazioni web che permette di controllare in remoto le istanze del browser ed emulare l'interazione di un utente.
Blazor with .net 5 - di Gerardo GrecoGiuneco S.r.lBlazor è un framework per la creazione di Single Page Application (SPA) tramite l’utilizzo di C#.
Creato da Steve Sanderson e successivamente inserito in .NET Core come esperimento.
Visto l’enorme successo avuto sulla community è stato poi deciso di renderlo parte integrante dell’ecosistema .NET
Offre tutti i vantaggi di un framework front-end scrivendo codice interamente in C#.
Creare API pubbliche, come evitare gli errori comuniAndrea Dottorݺߣ dell'evento tenuto il 06.07.2017 http://www.xedotnet.org/eventi/javascript-da-0-a-es6-api-rest/
Applicazioni Web ultra-performanti con Vue.js e DelphiMarco BreveglieriVue.js è un framework per creare interfacce utente estremamente performanti e che può essere introdotto progressivamente nelle vostre applicazioni Web, nel modo meno invasivo possibile. In questo talk scoprirete come utilizzarlo con Delphi creando una soluzione frontend e backend ad elevate prestazioni.
ASP.NET MVC 3 - Trasportare i dati nel ModelManuel ScapolanIl model consente di trasportare le informazioni dal controller alla vista e viceversa, facciamoci aiutare dallo Scaffolding e dagli HtmlHelper
Let's Go MobileSundin AssociatesNorthern Bank & Trust Company has quietly served local customers in Massachusetts for over 50 years. While other banks promote themselves, Northern focuses on serving customers and has earned loyalty through prudent practices. Northern has received top ratings and awards, including a 4-star rating from Bauer Financial and being named one of America's top three community banks. Northern puts customers first and invites area residents to discover their local bank.
Staying on top of socialSundin AssociatesFacebook, Instagram, Twitter, Snapchat – it’s hard enough to figure out how (or if) we want to use these new tools to maintain our own personal connections. But how do we keep up with the kids? During this session we will look at real life examples of how thoughtless moments online has had lasting impacts on children and adults, as well as discuss ways to stay connected to and tuned in to what our children are doing online.
Introduzione al TestingDotNetMarcheNello sviluppo software il termine “test” assume molti significati;
le tipologie di test sono infatti numerose, ma tutte hanno un unico scopo: provare che il software realizzato sia attinente alle specifiche e non presenti bug.
Tra tutti i test, quelli unitari rappresentano senza dubbio la categoria più interessante per lo sviluppatore, dato che sono dedicati alla verifica di piccole porzioni di
codice e sono spesso scritti nello stesso linguaggio usato per realizzare il software.
Agenda:
- Introduzione ai concetti base del testing
- Test unitari
- Librerie xUnit ed automazione dei test
- Alcuni pattern standard per test unitari
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottorݺߣ e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano BenedettiIl pattern architetturale MVC (Model View Controller) favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l'impiego dei più diffusi pattern di software engineering, il controllo completo dell'HTML generato e degli URL, la testabilità ed estendibilità.
In questa sessione vedremo le novità principali di Asp.Net MVC in versione 3.
La sessione è stata tenuta a SMAU Business Bologna il 9 giugno 2011
Migliora il tuo codice con knockout.jsAndrea DottorXeDotNet meeting del 5 Marzo 2013
In questa sessione vedremo come Knockout.js permetta di scrivere codice JavaScript in modo pulito e organizzato, semplificando la scrittura del codice e la sua manutenzione. Come lo si utilizza KO? Quali vantaggi ci offre? Quali librerie ci vengono in aiuto? Quali sarebbe meglio evitare?
Yii Framework - yes it is rapid web application development (Parte 1)brossi676PHP User Group Pavia
Yii Framework
yes it is rapid web application development
Asp.Net MVC 2 :: VS 2010 Community TourAndrea BalducciPresentazione di MVC2 per il community tour del lancio di Visual Studio 2010. Tappa di Perugia
DotNetUmbria + DotNetMarche
Powerful asp.net 4 e ie9Stefano BenedettiNET Framework versione 4 include miglioramenti per ASP.NET 4 in aree mirate. Anche Visual Studio 2010 include miglioramenti e nuove funzionalità per ottimizzare lo sviluppo di risorse Web. In questa sessione verrà fornita una panoramica di numerose delle nuove funzionalità incluse nella nuova versione. Vedremo anche le novità per gli sviluppatori introdotte da Internet Explorer 9
Design pattern architetturali Model View Controller, MVP e MVVMRiccardo CardinThis presentation talks about model view controller, model view presenter and model view viewmodel patterns. These are architectural design patterns for implementing user interfaces. They divide a given software application into three interconnected parts, so as to separate internal representations of information from the ways that information is presented to or accepted from the user. Also, they promote separation of concerns. As examples, some frameworks are reported, such as:
- Spring MVC
- BackboneJS
- AngularJS
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
ASP.NET MVC 6 - uno sguardo al futuroAndrea DottorPrepariamoci al cambiamento. ASP.NET MVC e ASP.NET Web API saranno unificati in un unico framework chiamato ASP.NET MVC 6, e questo è solo la prima di una serie di novità che stanno per arrivare.
Tutto si semplifica. Le performance migliorano. Un altro salto tecnologico in avanti portato da ASP.NET 5.
In questa sessione, infatti, vedremo tutte le novità che ASP.NET MVC 6 porta con se, e cercheremo di andare in dettaglio in modo da capire cosa voglia dire realizzare (da zero) o migrare (un'applicazione essitente) a questa nuova versione
ASP.NET MVC 2.0XeDotNetASP.NET MVC è un framework sviluppato da Microsoft che permette di sviluppare applicazioni web utilizzando il pattern Model-View-Controller. Questo pattern, e (in questa sessione) la sua implementazione realizzata da Microsoft, si propone di apportare alcuni benefici: Maggiore controllo del markup della pagina, URL più leggibili Facilità di integrazione con librerie AJAX, chiara separazione dei ruoli/responsabilità tra layer, facilitando i test e la manutenzione dell'applicazione, supporto per test-driven development. Nella sessione andremo in dettaglio nella versione 2 di ASP.NET MVC, e con esempi pratici daremo risposta alle domande più frequenti, e a molte altre. Quando si utilizza ASP.NET MVC? Come si utilizza ASP.NET MVC? Semplifica davvero la manutenzione dell'applicazione? E' realmente testabile? Cosa guadagno ad usare ASP.NET MVC?
Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...DotNetMarcheCome è nata l'esperienza della community romana di Host e come siamo riusciti ad essere riconosciuti da Airbnb. Cosa stiamo imparando, cosa funziona, gli errori da non fare.
Metriche per Zombie Communities: come "iniettare vita" in tribù di morti vive...DotNetMarche4 iscritti al meetup. Nessun commento al post. 1 solo speaker (che poi è tuo cugino). Se sai di cosa sto parlando allora significa che conosci la stretta allo stomaco che si prova quando la tua comminity è silenziosa quanto un cimitero. Ma è davvero la fine? Oppure un community leader può diventare il Dottor Frankenstein di turno e ribaltare la situazione? In questo talk vedremo come basarci sulle metriche per analizzare cosa non sta funzionando nella tua tribù e alcuni consigli azionabili per "resuscitare" l'entusiasmo dei suoi membri.
WPF 4 funDotNetMarcheVedremo come sfruttare le potenzialità di WPF per realizzare applicazioni diverse dalle classiche LOB (Line of Business applications), basandosi su 3D e Natural User Interface.
UI Composition - PrismDotNetMarcheCos'è la UI Composition e che problemi può risolvere
Perchè MVVM e WPF sono importanti per la UI Composition
Il concetto di 'region' e 'UI Injection'
Analisi del toolkit PRISM di Microsoft e cosa comporta realizzarsene uno in proprio.
UI CompositionDotNetMarcheCos'è la UI Composition e che problemi può risolvere
Perchè MVVM e WPF sono importanti per la UI Composition
Il concetto di 'region' e 'UI Injection'
Analisi del toolkit PRISM di Microsoft e cosa comporta realizzarsene uno in proprio.
Refactoring ASP.NET and beyondDotNetMarcheIn questa sessione verranno analizzate alcune pagine ASP.NET che verranno sottoposte a refactoring per aumentarne la modularità e comprensibilità del codice, nonchè favorire la testabilità delle funzioni core.
Si presenteranno techiche e strumenti che è possibile utilizzare in modo da avere un approccio più razionale ed 'ordinato' nella stesura del codice. Le pratiche ed i concetti illustrati sono di carattere generale, quindi liberamente applicabili ad ogni tipologia di applicazione.
Refactoring 2TheMax (con ReSharper)DotNetMarcheIn questa sessione a quattro mani introdurremo alcuni dei refactorings più comuni e più facilmente applicabili nell'utilizzo quotidiano, e vedremo come risolverli in maniera facile, veloce ed indolore utilizzando ReSharper e pochi colpi di tastiera.
Incidentalmente, inseriremo nel mentre un pò di patterns e di Test-Driven Development, perchè "se non è testato, allora non funziona"
jQuery Loves YouDotNetMarche"It's all about simplicity": perchè le applicazioni basate su Javascript sono spesso complesse, farraginose e difficilmente manutenibili quando è possibile renderle semplici, eleganti e funzionali?
In questa sessione a quattro mani vedremo per prima cosa come sfruttare Javascript al meglio, utilizzando i prototipi, i namespaces, gli oggetti, gli eventi, le chiusure e le altre mille funzionalità di un linguaggio di programmazione troppo spesso sottovalutato.
Ci soffermeremo poi su jQuery per analizzare il suo contributo nel semplificare task normalmente tediosi come la manipolazione del DOM, la gestione degli eventi, la programmazione asincrona (AJAX) e le problematiche di compatibilità cross-browser.
Silverlight in ActionDotNetMarcheThis document describes the architecture of a Silverlight application. It includes a client/UI module built with Silverlight and ASP.NET that communicates with web services. These web services provide access to data sources. The architecture also includes a framework with common components like business entities, data access, security services, and application modules. The framework is shared between the client/UI module and any server-side components.
Open XML & MOSSDotNetMarcheThis document discusses working with Open XML document formats in Microsoft Office SharePoint Server 2007. It provides an overview of the Open XML format and its components, including content types, relationships, and document structure. It also covers how Microsoft Office 2007 and MOSS 2007 support collaboration using Open XML formats through features like workflows, metadata, and document conversion services.
Microsoft SharePoint Server 2007 Technical OverviewDotNetMarcheThis document provides a technical overview of Microsoft SharePoint Server 2007. It discusses the six pillars or capabilities of SharePoint including platform, collaboration, portal, search, content management, and business process. It describes the SharePoint infrastructure including web servers, SQL servers, and IIS. It explains the SharePoint architecture with tiers for the user interface, web apps, and database. It also covers the SharePoint object model and provides an example of using the object model in code. Finally, it discusses how to start with SharePoint including relevant application domains, skills, and roles.
[Hands on] testing asp.net mvcDotNetMarcheIn questa sessione verranno messi in pratica i concetti espressi finora, tramite esempi di test di un'applicazione Asp.NET MVC.
Introduzione a CardSpaceDotNetMarcheUn altro building block del Framework 3.0 si chiama CardSpace ed ha l'ambizione di risolvere uno dei problemi più ricorrenti della quasi totalità delle applicazioni sia internet sia intranet: l'autenticazione utente.
I problemi correlati all'autenticazione sono di diversa natura: da una parte la difficoltà dell'utente nel gestire elenchi di username e password, dall'altra la sempre crescente necessità di evitare l'hacking delle password, o ancora la tipologia di informazioni che un utente vuole rivelare di sé a seconda del contesto, fino ad essere anche un semplice utente anonimo; ed infine la necessità di contemplare autorità di autenticazioni differenti a seconda del contesto.
Se nel passato Passport ha fallito la sua missione, CardSpace affronta in modo totalmente differente il problema rendendosi fruibile cross-browser e cross-platform per costruire un sistema universale di identificazione nel pieno rispetto della privacy.
Introduzione a Workflow FoundationDotNetMarcheCon il Framework 3.0 esordisce in Windows una nuova infrastruttura che permette agli sviluppatori di creare, grazie ad un designer, una rappresentazione visuale di una logica applicativa.
In questa introduzione vedremo come il ruolo di Workflow Foundation sia analogo a quello di un linguaggio che con i suoi statement provvede i mattoncini base per costruire un algoritmo. Una particolare attenzione verrà riposta nel prezioso meccanismo dei servizi del runtime di Workflow Foundation e naturalmente sulle Activity, il mattone fondamentale di questa infrastruttura.
Domain Model e SOA (Service Oriented Architecture)DotNetMarcheIn un mondo che è sempre più orientato ai servizi è fondamentale comprendere l’interazione tra il concetto stesso di servizio e un’architettura fortemente Domain Driven. In questo scenario lo sviluppatore si trova ad affrontare scelte talvolta difficili, come ad esempio decidere come esporre all’esterno il proprio Domain Model oppure capire se e quanto le tecnologie a supporto dell’interoperabilità debbano influire il modello implementativo del nostro Domain Model. In questa sessione si cercherà di capire quali sono i principi di design che possono venire in aiuto nella progettazione di architetture SOA, come ad esempio l'inversione di controllo o la programmazione orientata agli aspetti e si esamineranno i tool che possono aiutarci ad implementare correttamente un modello a servizi.
2. Agenda
► Storia degli strumenti Microsoft per lo
sviluppo Web
► Introduzione ad ASP.NET MVC
► Pattern MVC
► ASP.NET MVC nel dettaglio
► Futuro di ASP.NET MVC
1
5. 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
4
6. Prima c’era ASP “Classic” - Problemi
► Lascia completa libertà al programmatore =
– Codice e HTML sono mischiati (“spaghetti code”)
► Difficile separare implementazione e presentazione
5
<% 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 %>
7. 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
6
9. 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 delle web
application introducendo la gestione dello
stato
– Postback
– Session
– Application
– ViewState
8
10. 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
9
<html
xmlns="http://www.w3.org/1999/xht
ml" >
<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";
}
}
}
15. 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
14
Ma tutto ciò non è “out-of-the-box”
18. 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 Preview3 (Giugno
‘08)
► “Obbliga” una maggior separazione delle
responsabilità
17
19. ASP.NET MVC – Caratteristiche
► Implementa il pattern Model-View-Controller
► Sviluppato per essere testabile
► Estendibile
► URL mapping engine
► 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…
18
21. MVC in Real Life
► Consegna della pizza
► L’utente parla al controller (prende l’ordine
per la pizza)
22. MVC in Real Life
► Il controller delega al model (il cuoco
riceve l’ordine)
23. MVC in Real Life
► Quando la pizza è pronta, viene data al
controller che delega alla view
(fattorino porta la pizza a casa)
24. 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
23
25. Il flusso di un’applicazione MVC
24
Model
View
Controller
1
5
2
4
3
B
r
o
w
s
e
r
La richiesta
arriva al
controller
Il Controller
chiede i dati
al Model
Il Model
restituisce i dati
al controller
Il controller
formatta i dati e li
passa alla view
La view costriusce
la pagina che viene
inivata al browser
28. Routing
► Parte di ASP.NET 3.5 SP1
– System.Web.Routing.dll
► Url con parametri:
– {controller}, {action}, {parametri}
27
routes.MapRoute(
"Blog", //nome
"blog/{date}/", //url
/*valori di default per i parametri*/
new {
controller = "Blog", //Controller
action = "Show", //Action
date = DateTime.Now, //Parametri
title = ""
}
);
29. Controller
► Classe con nome <NomeController>Controller
► Eredita da Controller
► Un metodo pubblico per Action
► Metodo restituisce ActionResult
28
public class BlogController : Controller
{
public ActionResult Show(DateTime date, string title)
{
ViewData["Titolo"] = title;
ViewData["Data"] = date;
return View();
//return View(“<viewName>", <viewdata>);
}
}
30. View – Loosely Typed
► E’ un normale WebForm che eredita da ViewPage
► DEVE SOLO costruire la UI HTML
► ViewData è +/- una HashTable
29
public partial class Show : ViewPage
{
//quasi sempre vuoto
}
<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<%= ((DateTime)ViewData["Data"]).ToLongDateString()%>
31. View – Strongly Typed
► La view può anche essere strongly typed
– Complie time check
– Intellisense friendly
► ViewData è una classe custom
30
public partial class StrongShow : ViewPage<PresentationModelClass>
{
//quasi sempre vuoto
}
<h2><%= Html.Encode(ViewData.Model.Message) %></h2>
<%= ViewData.Model.Data.ToLongDateString()%>
32. View – UI Helpers
► UI Helper per aiutare la scrittura di codice
HTML
– Html.ActionLink
– Html.ActionLink<ControllerClass>
– Html.Form
– Html.Form<ControllerClass>
31
Html.ActionLink(“Testo Link",“ActionName",“Controller", new {
parametri });
Html.ActionLink<ControllerClass>( c => c.ActionName(parametri),"
Testo Link");
33. 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
32
35. ASP.NET MVC vs WebForms
► WebForms
– Sviluppo RAD
– Paradigma più simile allo sviluppo tradizionale
client-side
– Ottimo per “prototipare”
– Può diventare inmantenibile
► ASP.NET MVC
– Più codice da scrivere
– “Miglior” architettura dell’applicazione
– Maggior controllo su HTML
– Abilita uso di metodologie Agile
34
36. Stato di ASP.NET MVC
► Ora siamo alla Preview 3
► Routing ormai “stabile” (parte di ASP.NET 3.5
SP1)
► Nelle prossime Preview verranno indirizzati i
seguenti problemi:
– Integrazione “nativa” di Ajax
– Controlli con logica applicativa
35
37. 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
36
38. Risorse
► http://asp.net/mvc/ - Sito ufficiale, con
download P3
► http://www.codeplex.com/aspnet - Codice
sorgente
► http://del.icio.us/tag/aspnetmvc - tutti gli
articoli su ASP.NET MVC
► http://polymorphicpodcast.com/shows/mvcresour
ces/ - 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/
37