Quest'articolo ha lo scopo di fornire una veloce panoramica sulle funzionalità più interessanti introdotte con la versione 4 di ASP.NET.
Anzitutto è interessante sottolineare un aspetto che dà la misura dell'evoluzione di questa tecnologia. Oggi possiamo pensare ad ASP.NET non più come ad un'unica piattaforma di sviluppo, con il tempo infatti si è andato specializzando un core di servizi di base, ormai chiamato ASP.NET Framework (appena sopra al Framework .NET) sulle quali si stanno consolidando quattro componenti, a realizzare lo strato di presentazione:
In questo articolo ci occupiamo principalmente di Web Forms, esaminando le novità che tendono a rendere questa tecnologia più semplice ed efficace rispetto al passato.
Controllare i Client ID
Nelle applicazioni web si fa un uso sempre più massiccio di tecnologia Ajax, il problema principale che i programmatori trovano è identificare univocamente i server control negli script lato client perché spesso a runtime assumono dei nomi troppo lunghi o che non sono affatto prevedibili.
Con ASP.NET 4 è stata introdotta una nuova proprietà che prende il nome di ClientIDMode
il cui scopo è assegnare degli identificativi più semplici (static
) e predicibili (predictable
, per controlli come le liste puntate e i menu) che aiutino gli sviluppatori nel referenziare i controlli generati lato server negli script usati lato client.
Questa caratteristica è particolarmente utile quando utilizziamo framework lato client come JQueryUI ad esempio.
Output Caching
Grazie al nuovo meccanismo di estensione all'Output Caching, è possibile definire provider specifici sia per supporti di memorizzazione dati (dischi locali o remoti, motori di cache distribuiti, RAM, etc.) sia per singole richieste HTTP e controlli Web.
Progettando provider ad hoc è possibile definire strategie di gestione della Cache più intelligenti ed oculate, ad esempio, si può decidere di tenere in RAM le pagine più visitate di un portale e registrare su disco le pagine con meno richieste.
auto-start
Alcune applicazioni Web hanno bisogno di caricare grosse quantità di dati o di compiere dei pesanti processi di inizializzazione prima di poter servire la prima richiesta Web. Per gestire queste situazioni nelle precedenti versioni di ASP.NET si dovevano applicare degli stratagemmi per svegliare l'applicazione dopo di che si eseguiva l'inizializzazione dal file Global.asax
.
Con la versione 4 di ASP.NET è stata introdotta una nuova funzionalità chiamata auto-start che gestisce direttamente questi scenari. L'auto-start si può usare solo con IIS 7.5 e su macchine con sistema operativo Windows Server 2008.
Per usarla è necessario configurare in IIS il file Global.asax
attraverso il quale si informa il web server su quale applicazione mandare in esecuzione. Il codice di inizializzazione non è più posizionato nel metodo Application_Load
del Global.asax
ma nel metodo Preload
di un apposito provider di auto-start.
Routing e SEO
Il meccanismo di Routing introdotto con ASP.NET 3.5 per le applicazioni MVC è ora supportato anche per le Web Form. Creare url più amichevoli per gli utenti e per i motori di ricerca adesso è ancora più facile grazie alla semplificazione di alcuni costrutti ed alla introduzione di nuovi utili oggetti come il PageRouteHandler
, l'HttpRequest.RequestContext
e il RouteParameter
.
QueryExtender
Il tipico filtro sui dati, utilizzato frequentemente nelle applicazioni Web, viene realizzato spesso ricorrendo alla clausola Where
nelle query SQL, appensantendone il meccanismo di creazione.
Un nuovo controllo, che prende il nome di QueryExtender
, può essere utilizzato solo per filtrare i dati restituiti dai controlli EntityDataSource
o LinqDataSource
. Il QueryExtender
supporta una grande varietà di opzioni di filtraggio come il SearchExpression
che filtra su uno o più campi in base ai valori passati in input o come il RangeExpression che filtra su range di valori, è utile anche l'OrderByExpression
che ordina i dati in base ad una colonna specificata.
Il QueryExtender
si rivela molto utile perché consente al programmatore di avere una sola versione della query e può applicare i filtri senza modificarla nella sintassi.
Chart Control
Il Chart Control che poteva essere aggiunto all'ambiente di sviluppo in ASP.Net 3.5 adesso è stato definitivamente integrato nel framework. Questo controllo ci permette di aggiungere alle pagine grafici d'impatto, generati automaticamente con i dati delle nostre applicazioni.
ViewStateMode
In ASP.NET 4 è possibile gestire con più accuratezza il ViewState
. Grazie alla proprietà ViewStateMode
, possiamo scegliere di mantenere lo stato solo di pochi controlli. La proprietà può assumere tre stati: abilitato, disabilitato e ereditato. Per default, il valore è ereditato dal controllo contenitore, fino a risalire alla pagina.
Deployment
Interessanti i passi avanti fatti nel campo della distribuzione (deployment) delle applicazioni Web. Ora infatti, è possibile creare dei pacchetti Web che contengono applicazione e metadati (impostazioni per IIS, dll da installare nel GAC, chiavi del registro di configurazione, etc) che vengono usati per l'installazione, guidata o manuale, del pacchetto.
Attraverso l'uso di file come il web.debug.config ed il web.release.config è possibile trasformare il file di configurazione dell'applicazione, il web.config
, in base alle esigenze specifiche dei vari ambienti di sviluppo e produzione.
Per pubblicare una applicazione Web su un server remoto con un semplice click è possibile usare il meccanismo di One-Click Publishing che permette di usare i servizi di gestione remota di IIS.
Sono stati fatti passi significativi verso il processo di conformità agli standard HTML/XHTML e di accessibilità. Le versioni precedenti di ASP.NET generavano codici HTML per alcuni controlli Web lato server decisamente fuori standard, con la versione 4.0 sono state rimosse molte di queste anomalie.
Conclusioni
Il passaggio dalla versione 3.5 di ASP.NET alla 4 non è stato radicale come quello tra la 1.1 e la 2. I nuovi controlli e le funzionalità introdotte segnano però un importante miglioramento in termini di performance e di aderenza agli standard Web.