Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

61
Model View Controller Semplificare il codice e minimizzare i tempi! Manuel Scapolan [email protected] Marco Parenzan [email protected] 10 dicembre 2009

description

L’aumento della complessità delle applicazioni e la velocità di realizzazione richiesta al giorno d’oggi, hanno obbligato gli sviluppatori ad utilizzare metodologie formali per la scrittura di codice e il successivo testing dello stesso al fine di minimizzare i tempi di rilascio. L’utilizzo dei pattern, ossia di convenzioni condivise dalla community dei programmatori, è una pratica sempre più diffusa e adottata anche per applicazioni Web. L’ormai trentennale pattern Model-View-Controller (MVC) sta attualmente conoscendo una nuova giovinezza grazie al successo di framework nelle applicazioni Web che lo usano come riferimento. Rails è il framework MVC più famoso e diffuso, implementato per la piattaforma Ruby, mentre ASP.NET MVC e MonoRail sono i due framework web MVC che stanno riscuotendo il maggiore successo per lo sviluppo su .NET e su Windows. Conosceremo quindi la filosofia di riferimento e le specificità dei due framework tramite due implementazioni reali di una stessa applicazione e ne discuteremo vantaggi e svantaggi.

Transcript of Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Page 1: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model View Controller

Semplificare il codice e minimizzare i tempi!

Manuel Scapolan [email protected]

Marco Parenzan [email protected]

10 dicembre 2009

Page 2: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Agenda

• Il “passato”: Web Forms

• Il “presente”(?): Model

• il “futuro”: MVC

– Alcuni accenni tecnologici

• Demo: MonoRail

• Demo: ASP.NET MVC

• Conclusioni

– Q&A

2

Page 3: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model View Controller

Semplificare il codice e minimizzare i tempi!

Web Forms

Page 4: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

DEMO

Model View Controller

Semplificare il codice e minimizzare i tempi!

Una pagina ASP.NET Web Forms

Page 5: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Vantaggi di WebForm

• Web Form ASP.NET è stabile e maturo ed è

supportato da molti strumenti e controlli di

terze parti

• Metafora di click tipica dello sviluppo desktop di

Windows

• Astrazione dalle conoscenze di HTML e

JavaScript recuperando invece le conoscenze dei

programmatori Windows

– Necessario introdurre PostBack e ViewState

– Necessario solo .NET

• Forte componentizzazione

• Autocaricamento dei controlli

Page 6: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Svantaggi di WebForm

• Mancanza della Separation of Concerns

• Non è possibile testare una pagina aspx

• Statefulness difficile da controllare (a scapito

delle prestazioni)

• Difficoltà di accesso ai recenti framework

JavaScript (come jQuery, Dojo e PrototypeJS)

• Il postback rende poco SEO

– Alcuni motori di ricerca addirittura declassano la

pagina

Page 7: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model View Controller

Semplificare il codice e minimizzare i tempi!

Introduzione al MVC

Page 8: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Ritorno alle origini

Il web è semplicemente:

• GET

Riceve dati dal server. I parametri sono passati

attraverso l'indirizzo.

• POST

Invia i dati al server per salvarli o perchè siano

elaborati. I parametri vengono passati nel corpo

della richiesta con la forma:

nome1=valore1&nome2=valore2

Page 9: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!Cos‟è MVC?

• MODEL

– La rappresentazione (specifica per il dominio) dei dati

su cui l‟applicazione opera

• VIEW

– Renderizza il modello in una forma utile

all‟interazione, tipicamente un elemento di interfaccia

utente

– Ci possono essere più viste (rappresentazioni) per un

singolo modello e per finalità diverse

• CONTROLLER

– Riceve l‟input, coordina l‟elaborazione sul model e

dispaccia tutto alla view

Page 10: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!Cos‟è MVC?

• Model–View–Controller (MVC) è un pattern

architetturale usato in ingegneria del software

• Il pattern isola la business logic dalla

presentation, permettendo:

– Testing

– Indipendenza nello sviluppo

• Non è un concetto nuovo

• Separation of Concerns

– “Separate content from presentation and data-

processing (model) from content.” --Wikipedia

– Originario di SmallTalk nel 1979

Page 11: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Separation of Concerns

• Questa strutturazione, basata sulla separazione

dei concetti, ha una validità comprovata da

tantissime applicazioni web già realizzate (non

solo MVC)

– Separare la vista dalla logica applicativa permette di

ridisegnare l‟estetica del sito senza toccare la logica.

Questo permette di far interagire in maniera più

produttiva un web designer con il web programmer

– È possibile cambiare la tecnologia di implementazione

delle viste

– Spesso è necessario modificare la logica

dell‟applicazione senza che per questo debba essere

modificata l‟estetica

Page 12: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

MVC vs WebForms

MVC WebForms

FilterLogica comune (log,

security, ...)

ControllerPrende le decisioni

ed usufruisce dei

servizi

ViewPresenta i dati

FilterLogica comune

(trace, log, error

handling, ...)

PageCode-behind

PageCodice di markup

ControlsCodice di markup

Controlscode-behind

Fonte: Monorail presentation at WebDevelopersCommunity,

Febbraio 2009 (Ken Egozi)

Page 13: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Per chi sono i framework MVC?

• A chi interessa REST

– Gli Url sono puliti

• A chi interessa SEO

– L‟HTML “pulito” è importante

• Chi preferisce “convention over configuration”

– Oltre all‟MVC, CoC è l‟approccio tipico di Ruby on Rails

• Per chi il testing è importante

• Per chi preferisce lavorare con gli elementi base

del Web

– HTML, Javascript, CSS

• Per chi preferisce i patterns, le astrazioni

Page 14: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

REST è importante

• Representational state transfer (REST) è un tipo

di architettura software per i sistemi di ipertesto

distribuiti come il World Wide Web

• REST prevede che la scalabilità del Web e la

crescita siano diretti risultati di pochi principi

chiave di progettazione

• Lo stato dell'applicazione e le funzionalità sono

divisi in Risorse WEB

• Ogni risorsa è unica e indirizzabile

usando sintassi universale per uso nei link

ipertestuali

• Tutte le risorse sono condivise come interfaccia

uniforme per il trasferimento di stato tra client

e risorse

Page 15: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Url

• Gli Url non puntano più ad una pagina fisica

• Un Url è mappato su un controller

– C‟è maggiore flessibilità

– C‟è un routing engine basato sugli Url, con una route

table

Page 16: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

SEO è importante

• Url più comprensibili e “significativi”

– http://www.host.com/Products/CatalogItem.aspx?id=6

– http://www.host.com/Products/Televisions/Catalog/6

• I motodi di ricerca penalizzano url non statici

che non possono riprodurre

Page 17: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

HTML pulito è importante

• Non c‟è più necessità di un ViewState o di un

ControlState

• Risposta HTTP più compatta

– Migliore scalabilità

– Migliori performances

Page 18: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Convention over Configuration

• Configuration

– Informazioni memorizzate in web.config

• Convention

– Seguire le “regole”

• Nomi delle classi

• Nomi delle cartelle

– Alcune possono essere sovrascritte, altre no

Page 19: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Struttura delle cartelle

• I framework MVC enfatizzano il principio “convenzione su configurazione”– Ci sono delle locazioni standard per ogni tipo di file

• Content– Contiene tutti i contenuti statici (immagini, file css)

• Controllers– Classi controller

• Models– Classi del modello

• Scripts– Contiene i files Javascript, compresi Ajaxe jQuery

• Views– Contiene le viste

Page 20: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Test-Driven Development

• Il TDD è una metodologia che mette lo sviluppo dei test prima di tutto

– Spesso si scrive il codice di test prima del codice stesso!

• Ci sono tre momenti (Red/Green/Refactor) nello sviluppo TDD:

– Scrivere uno unit test che fallisce (Red)

– Scrivere un test che passa (Green)

– Rifattorizzare il codice (Refactor)

• Vantaggi

– Si scrive prima di tutto il codice strettamente necessario a passare il test

– Ci si concentra su “come” il codice verrà usato (il codice è spesso migliore, più

chiaro)

– I test diventano “parte integrante” dello sviluppo stesso. Servono soprattutto

nel momento in cui si arriva vicino alla deadline!

Page 21: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Per chi preferisce lavorare con gli elementi base del Web

• ID dei tag “deterministici”

– <div id=“ctl_000_ctl001_textbox”>…</div>

• Javascript is a first-class citizen

– built-in support for „unobtrusive javascript‟

– built-in support per JSON

– built-in support per partial page rendering

Page 22: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Per chi importa i pattern

• Basta con “double-click here” e codice

organizzato in Event Hadlers

• Approccio invece più object oriented

– Si deriva da classi base

– Override di metodi astratti o virtuali

– Implementare le interfacce

Page 23: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model View Controller

Semplificare il codice e minimizzare i tempi!

Alcuni concetti

Page 24: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Controller

• È il centro del modello MVC

• Ogni richiesta (HTTP) è gestita da un controller e

renderizzata da una View

• Senza un controller presentazione e business logic

sarebbero contenute direttamente nella view

– No testability

– No Separation of Conterns

– No Single Responsability

• Il controller è una classe

• La action di un controller è una “Single Responsibility”

• L‟algoritmo di default implementato in MVC per invocare

una action è una “Convention over Configuration”

– Es. In /Product/Details viene invocato il metodo Details()

della classe ProductController

Page 25: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Consigli per una ControllerAction

• Sono funzioni di coordinamento per la

presentazione

– Tutte le logiche dovrebbero stare in un‟altra classe

• Sono una interfaccia

– Vale anche per i servizi Web

• Non dovrebbero contenere funzioni di accesso ai

dati

– Es. Usare il Repository Pattern

– “Se una ControllerAction non sta in uno schermo, forse

porta dietro più di una responsabilità”

Page 26: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

“No more file mapping”

• In precedenza non aveva il controllo degli Url

– Filosofia della pubblicazione dei files (aspx, ashx, php,

jsp …)

– <path fisico>=Server.MapPath(<path logico>)

– = Path.Combine(<physical root>, <virtual path>)

• Non molto RESTful

• Per avere il controllo degli UrlUrl Rewriting

– Mappatura di un Url web “qualsiasi” su un path (cioè su

file)

Page 27: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Controller Actions vs. Urls

• Quale è la relazione tra Controller Actions e Url

– /Product/Index

• Invoca l‟azione Index sul controller ProductController

– /Product

• Invoca l‟azione Index sul controller ProductController

– /Product/Help

• Invoca l‟azione Help sul controller ProductController

– /Product/Details/34

• Invoca l‟azione Details sul controller ProductController, passando come

argomento 34 come Id

• Da dove salta fuori l‟Id?

• Il template di riferimento per gli Url è

– {controller}[/{action}[/{id}]]

– Si può customizzare intervenendo nel file Global.asax (si vedrà dopo)

• Da notare come il Controller si chiami “ProductController”, cioè

con “Controller” finale

– Si usa chiamare un controller con il nome+”Controller” finale, per

essere “rimosso” in fase di Url

Page 28: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Usare uno o più ViewEngine(s)

• ASP.NET Web Forms— ASP.NET MVC viene fornito con il motore di

visualizzazione di ASP.NET. Ma molti altri sono disponibili– NHaml (pronounced enamel)— NHaml is an implementation of the popular RAILS Haml view

engine for the ASP.NET MVC framework. Distributed under the open source MIT license.

• http://code.google.com/p/nhaml

– Spark— The idea behind the Spark view engine is to allow "the HTML to dominate the flow

and the code to fit seamlessly."

• http://dev.dejardin.org

– Brail— A port of the Brail view engine from MonoRail to the ASP.NET MVC framework. The

Brail view engine is part of the MVCContrib project.

• www.codeplex.com/MVCContrib

– nVelocity— The nVelocity view engine is a port of the Java Apache Software Foundation

Velocity project to the .NET framework. The nVelocity view engine is part of the

MVCContrib project.

• http://www.codeplex.com/MVCContrib

Page 29: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model View Controller

Semplificare il codice e minimizzare i tempi!

MonoRail

Page 30: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

MonoRail

• MVC Framework:

– Open source, Apache licence

– Costruito sulla pipeline di ASP.NET:

• Session

• Http Modules

• Authentication/Authorization

• Caching

• etc.

Page 31: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Come funziona

Page 32: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Convention over Configuration

URL <-> Action Model View Controller

Page 33: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Convention over Configuration

./Views/product/view.vm

ControllerView

View Engine

Model View Controller

Per default viene caricata la vista che ha lo

stesso nome della action, ma posso

specificare da codice quale vista caricare:

Page 34: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

MonoRail in action (1)

• Mappare l'estensione .rails sul filtro aspnet_isapi

34

Page 35: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

MonoRail in action (2)

• Aggiungere sezione di configurazione nel Web.config

Page 36: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

MonoRail in action (3)

• Aggiungere i riferimenti alle librerie:

• Castle.Core

• Castle.MonoRail.Framework

• Castle.MonoRail.Framework.Views.NVelocity

• NVelocity

Dipendono dal view engine utilizzato

Page 37: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

DEMO

Model View Controller

Semplificare il codice e minimizzare i tempi!

MonoRail

Page 38: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model View Controller

Semplificare il codice e minimizzare i tempi!

ASP.NET MVC

Page 39: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

ASP.NET MVC

• È l‟implementazione di Microsoft del pattern

Model-View-Controller in un framework per il

Web in .NET

– Shared source

– Costruito sulla pipeline di ASP.NET:

• Session

• Http Modules

• Authentication/Authorization

• Caching

• etc.

• È una alternativa alle WebForm applications

• È un framework altamente modulare ed

estensibile

• È un framework REST-friendly

Page 40: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Come funziona

Page 41: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Convention over Configuration

URL <-> Action Model View Controller

Page 42: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Routing Engine

URL <-> Action Model View Controller

Page 43: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Convention over Configuration

./Views/products/view.aspx

ControllerView

View Engine

Model View Controller

Per default viene caricata la vista che ha lo

stesso nome della action, ma posso

specificare da codice quale vista caricare:

Page 44: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

ASP.NET MVC in action (1)

• Mappare l'estensione .mvc sul filtro aspnet_isapi

– Solo se siamo in IIS 5.x/6.x

44

Page 45: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

ASP.NET MVC in action (2)

• Web.config IIS 5.x/6.x

• Web.config IIS 7.x

Page 46: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

ASP.NET MVC in action (3)

• Aggiungere i riferimenti alle

librerie:

• System.Web.Mvc

• System.Web.Routing

• …eventuali ViewEngine

• Non fa parte del .NET

Framework 3.5sp1

– Farà parte del .NET Framework

4.0 (ASP.NET MVC 2.0)

Page 47: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Lo stack ASP.NET aggiornato

.NET Framework 3.5sp1 •Common-Language Runtime 2.0•Base Class Library 3.5

ASP.NET Runtime

•HttpApplication•HttpContext•HttpRequest•HttpResponse

•HttpRuntime•HttpUtility•IHttpHandler•IHttpModule•Authorization

•Authentication•Membership•Caching

ASPX Pages •MasterPages•Themes, Skins•General Templating

ASP.NET WebForms

•Lifecycle•Postback•ViewState•ControlState

ASP.NET MVC •Routes•Controllers•ViewData•ActionFilters

Page 48: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

DEMO

Model View Controller

Semplificare il codice e minimizzare i tempi!

ASP.NET MVC

Page 49: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Alcune imprecisioni su ASP.NET MVC(non del sottoscritto)

• È per tutti

– No, al momento può essere presto ed è meno

“intuitivo” (rispetto alle WebForm)

• È un sostituto per le WebForms

• È il miglior modo per sviluppare applicazioni

Web su .NET

• Bisogna riscrivere tutte le applicazioni WebForm

in MVC

Page 50: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model View Controller

Semplificare il codice e minimizzare i tempi!

Conclusioni

Page 51: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!Conclusioni

• Non c‟è un vincitore

– Né lo cercavamo

• C‟è sicuramente qualcosa di nuovo

51

Page 52: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

• Pro WebForms:

– Adatte allo sviluppo

RAD

– Designer integrato in

Visual Studio

– Molte librerie di

controlli di terze parti

– Ottime per prototipi o

applicazioni

dimostrative

• Contro WebForms:

– Logica di

presentazione

mescolata alla logica

di business

– Difficile da testare

– Pagine pesanti per la

gestione del Viewstate

MVC vs WebForms

Page 53: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

• Pro MVC:

– Separation of Concerns

(SoC)

– Controllo completo del

codice HTML generato

– Facile da testare

– No Viewstate (alle

volte può essere uno

svantaggio)

– Favorisce

l'estendibilità e la

mantenibilità delle

applicazioni

• Contro MVC:

– No designer (è uno

svantaggio?)

– No controlli di terze

parti o visuali (ancora)

– Iniziale curva di

apprendimento per chi

è abituato alle

applicazioni event-

driven

– Scarsa

documentazione

(MonoRail)

– Scarsa integrazione

con Visual Studio

(MonoRail)

MVC vs WebForms

Page 54: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

WebForm 4.0 (in ASP.NET 4.0)

• È possibile disattivare o controllare la

dimensione del viewstate

• È possibile utilizzare un modulo HTTP ad hoc per

eseguire la riscrittura URL

– è possibile utilizzare il Web più recente routing API

ASP.NET 3.5 SP1.

• È possibile controllare dettaglio l'ID di elementi,

inclusi gli elementi con ambiti

• L'integrazione di Framework di JavaScript

esterno è più semplice ed efficiente.

• API di gestione della cronologia in ASP.NET 3.5

SP1 più semplice

Page 55: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Testability

• Unit testing di un controller:

Page 56: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Link utili (MonoRail)

• Castle Project:

– http://www.castleproject.org

• Blog:

– http://hammett.castleproject.org

– http://ayende.com/Blog

– http://www.kenegozi.com/blog

Page 57: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Link utili (ASP.NET MVC)

• ASP.NET MVC:

– http://www.asp.net/mvc

• Blog:

– Phil Haack (http://haacked.com/)

– Scott Hanselman (http://www.hanselman.com/)

– Scott Guthrie (http://weblogs.asp.net/scottgu/)

– Simone Chiaretta (http://codeclimber.net.nz/)

– Keyvan Nayyeri (http://nayyeri.net/)

– Ugo Lattanzi (http://www.imperugo.tostring.it/)

– Jeffrey Palermo (http://jeffreypalermo.com/)

– …e tanti altri…

Page 58: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Libri (ASP.NET MVC)

• MVC in Action

– http://www.manning.com/palermo/

• Beginning ASP.NET MVC

– http://www.google.it/search?hl=it&source=hp&q=Begi

nning+ASP.NET+MVC&meta=&aq=f&oq=

• Professional ASP.NET MVC

– http://www.wrox.com/WileyCDA/WroxTitle/Professio

nal-ASP-NET-MVC-1-0.productCd-0470384611.html

Page 59: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Manuel Scapolan

blog: http://www.manuelscapolan.it/

email: [email protected]

web: http://www.manuelscapolan.it/

Skype: manuel.scapolan

Messenger [email protected]

Twitter: -

community: www.1nn0va.net

Page 60: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model V

iew

Contr

oller

Sem

plifi

care

il codic

e e

min

imiz

zare

i t

em

pi!

Marco Parenzan

blog: http://blog.codeisvalue.com/

email: [email protected]

web: http://www.codeisvalue.com/

Skype: marco.parenzan

Messenger [email protected]

Twitter: marco_parenzan

community: www.1nn0va.net

60

Page 61: Model View Controller - Semplificare Il Codice E Minimizzare I Tempi

Model View Controller

Semplificare il codice e minimizzare i tempi!

Grazie

Q & A