Uno sguardo a ASP.NET 4.5 e Visual Web Developer 11

di Marco De Sanctis, in ASP.NET,

La preview della prossima versione di ASP.NET è inclusa all'interno del .NET Framework 4.5.

Continuano le anticipazioni di ciò che ci attende nelle prossime release di .NET Framework e Visual Studio. Come abbiamo già avuto modo di riportare, è stata da poco rilasciata una versione di preview per gli sviluppatori che, com'era lecito attendersi, contiene anche i bit relativi ad ASP.NET 4.5. Cerchiamo di capire quali siano le novità incluse in questo pacchetto, che comprendono migliorie tanto sul lato ambiente di sviluppo, sia per ciò che concerne nuove funzionalità del runtime di ASP.NET che di Web Forms. Ci sono, inoltre, interessanti novità anche in Visual Web Developer 11 e in Web Matrix su ASP.NET Web Pages.

ASP.NET Runtime e funzionalità di base

  • Gestione asincrona dei flussi di Request e Response: ASP.NET 4.5 dà ora la possibilità di accedere in lettura allo stream di Request, o effettuare il flush dello stream di Response in maniera asincrona. Questa funzionalità è particolarmente importante, in ottica di scalabilità, quando realizziamo Http Handler che gestiscono stream di grandi dimensioni, come ad esempio upload o download di grandi file, perchè consentono di assegnare il compito ad un thread I/O, liberando un worker thread di IIS che quindi può tornare disponibile per processare nuove richieste di altri utenti.
  • Supporto di async e Task all'interno di Http Module e Http Handler: da sempre, in ASP.NET, abbiamo la possibilità di realizzare Http Module e Http Handler asincroni, sebbene la quantità di codice da scrivere sia decisamente elevata. In ASP.NET 4.5 questa funzionalità è stata adattata alle potenzialità del Framework 4.5 e di C# 5.0, consentendoci di sfruttare la classe Task e le keyword async e await (più qualche nuovo helper) per rendere questi oggetti semplici da realizzare e soprattutto molto più leggibili. Ad esempio, nel caso di un handler sarà sufficiente ereditare dalla classe HttpTaskAsyncHandler ed effettuare l'override del metodo ProcessRequestAsync.
  • Migliorie sulla request validation: sebbene la validazione della request sia sempre attiva per default, è ora possibile configurarla in modalità Lazy. In questo modo, i controlli sulle variabili contenute nella request verranno effettuati solo nel momento in cui effettivamente si accede ad una di esse (ad esempio con un Request.Form[...]) e solo per la variabile di cui è stato richiesto il valore. Inoltre, è possibile accedere ad una speciale collection, denominata Unvalidated Request, che contiene i medesimi valori ma che evita di far scattare le procedure di validazione. 
  • AntiXSS library è ora a tutti gli effetti un componente di ASP.NET, visto che, quantomento le funzionalità principali, sono state incluse nel core framework, all'interno del namespace System.Web.Security.AntiXss.
  • Supporto al protocollo WebSocket: il protocollo WebSocket rappresenta lo standard W3C per instaurare una comunicazione bidirezionale tra client e server su HTTP. IIS8 supporta questo standard ed è in grado di instradare le richieste di questo tipo verso ASP.NET, così che possiamo gestirle con una nuova serie di API managed. In particolare, un nuovo metodo della classe HttpContext consente di trasformare la request di tipo GET in una request di tipo WebSocket, e di gestirla all'interno di un apposito delegate.
  • Bundling e minification di Javascript e CSS: è ora possibile referenziare, tramite una sola riga di markup, un'intera cartella contenente file Javascript o CSS. In questo modo, viene prodotto in output un riferimento ad un unico file, così da limitare il numero di request necessarie al browser per visualizzare la pagina, il cui contenuto sarà anche automaticamente minificato, eliminando commenti e whitespace. Questa funzionalità è disponibile in ASP.NET Web Forms, ASP.NET MVC e ASP.NET Web Pages
  • Sono state introdotte, inoltre, numerose migliorie prestazionali che influenzano soprattutto la fase di startup di un'applicazione, quali condivisione in memory di librerie comuni, JIT compilation parallela, su core multipli, fine-tuning del garbage collector e prefetch delle pagine.

ASP.NET Web Forms

  • Strongly typed data controls: fino ad oggi, per configurare il binding su un controllo Repeater o ListView, abbiamo utilizzato i metodi Eval o Bind. Entrambi accettano un parametro di tipo string, che viene poi risolto a runtime, tramite Reflection, per determinare il nome della proprietà da visualizzare. Questo approccio presenta diversi problemi, quali mancato supporto al refactoring o all'Intellisense di Visual Studio, oltre al fatto di sollevare eventualmente errori solo in fase di esecuzione. In ASP.NET 4.5 è ora possibile specificare, su tutti i data control, la proprietà ModelType; in questo modo, in fase di binding, avremo la disponibilità delle due nuove variabili Item e BindItem (rispettivamente per one-way e two-way binding) che ci consentiranno di accedere alle proprietà dell'oggetto in binding in maniera fortemente tipizzata.
  • Model binding: la nuova funzionalità di model binding consente di legare in maniera più intuitiva i data controls (ad esempio, una GridView) in pagina con i metodi definiti nel code behind. In particolare, è possibile ad esempio specificare già all'intero dei data controls il SelectMethod utilizzato per popolarli, senza ricorrere all'ausilio della ObjectDataSource. Se questo metodo restituisce un oggetto di tipo IQueryable, la griglia sarà in grado di manipolare la query per aggiungere logiche di paginazione o di ordinamento, prima che venga eseguita. Tramite l'uso di attributi, inoltre, sarà possibile legare i valori dei parametri di questo metodo al contenuto della querystring o al valore di altri controlli in pagina.
  • Il supporto a HTML5 è stato ulteriormente migliorato, includendo ad esempio i nuovi input type (email, datetime) nella TextBox o consentendo la selezione multipla di file da un controllo di tipo FileUpload.

Visual Web Developer 11 Developer Preview

  • Migliorie del markup editor: una limitazione che accomuna tutte le versioni di Visual Studio, fino alla recentissima 2010, è che gli smart task (ossia i wizard del designer che consentono di configurare facilmente i controlli ASP.NET) sono disponibili esclusivamente nella designer view. In Visual Studio 11, invece, potremo utilizzare questa utile funzionalità anche dall'editor di markup. Anche l'Intellisense beneficerà di un sensibile miglioramento, supportando i nuovi tag HTML5, unitamente a nuovi snippet, e soprattutto grazie alla funzionalità di ricerca evoluta, già presente negli editor C# e Visual Basic, che consente ad esempio di ricercare le keyword tramite le iniziali. Sarà inoltre possibile, evidenziando un insieme di tag, creare direttamente uno UserControl tramite la funzione "Extract to User Control" e creare gli event handler direttamente dal markup editor. Graditissima, infine, la facility che, alla modifica di un tag di apertura, aggiorna automaticamente anche il corrispondente tag di chiusura.
  • Migliorie all'editor Javascript: come abbiamo avuto modo di apprendere dalle sessioni di BUILD, Javascript è a tutti gli effetti uno dei linguaggi principali per sviluppare applicazioni in Windows 8. Pertanto, com'era lecito attendersi, il corrispondente editor in Visual Studio 11 è stato completamete rivisto e rinnovato, migliorando di molto l'esperienza utente e rendendola molto simile a quella di C# o Visual Basic. In particolare, è stato introdotta la Code Outlining, che consente di collassare o espandere i singoli metodi, come pure la funzionalità Go to Definition, oltre a nuove migliorie dell'Intellisense.
  • Migliorie all'editor CSS: anche l'editor CSS è stato notevolmente evoluto rispetto a quanto già presente in Visual Studio 2010, in particolare per ciò che concerne l'Intellisense (anche qui sono disponibili le funzionalità di ricerca avanzate già accennate in precedenza), per la presenza dei code snippet e il supporto alle nuove proprietà di CSS3, alle media query e agli schema specifici dei vari vendor (-webkit-, -moz-, ecc.). Ora è inoltre possibile definire delle region che possono essere collassate, per migliorare la leggibilità di file di grandi dimensioni.
  • Page inspector: si tratta di una funzionalità inedita di Visual Studio 11, che consente di affiancare il sorgente della pagina al markup HTML generato, in modo da poter identificare, dato il codice server-side, qual'è stato l'output prodotto.
  • Multi-targeting: VS11 supporterà tutte le versioni del Framework dalla 2.0; un'ulteriore novità è che, finalmente, il formato dei file di progetto sarà compativile con quello di Visual Studio 2010: questo vuol dire che rimarranno inalterati, a prescindere dalla versione di Visual Studio che utilizzeremo per aprirli.

ASP.NET Web Pages 2

  • Nuovo template per lo Starter Site: il sito di esempio include ora delle funzionalità più moderne, quali l'adattamento dinamico tramite CSS3 a browser mobile e il supporto a diverse modalità di login, tramite account Google, Windows Live, Yahoo o Facebook.
  • Miglioramenti alla validazione dell'input: è ora supportata la validazione client-side, unitamente a una serie di nuovi helper che consento di specificare regole di validazione lato server con l'utilizzo di pochissimo codice.
  • Dal punto di vista di gestione dell'autenticazione, ASP.NET Web Pages 2 supporta ora un gran numero di servizi esterni, quali Google, Yahoo, Facebook, Twitter, e Windows Live.
  • Come per ASP.NET MVC 4, anche in Web Pages 2 è ora possibile realizzare delle pagine ad-hoc per i browser mobile, dall'estenione ".mobile.cshtml", che verranno automaticamente invocate nel caso in cui la richiesta provenga da un dispositivo.
  • Un nuovo helper per le mappe consentirà invece di includere nelle nostre pagine mappe di Yahoo, Google, Bing o MapQuest.

In questa pagina sono presenti le note di rilascio complete. La nuova versione di ASP.NET è, come già detto, presente all'intero di .NET Framework 4.5 Developer Preview, il cui download è disponibile a questo indirizzo, dov'è presente anche il link per il download della preview di Visual Studio 11. ASP.NET Web Pages 2, invece, non è incluso in questi pacchetti, ma è disponibile tramite Web Platform Installer. Le versioni definitive sono annunciate per la prossima primavera.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti