29
@ Web@Work ASP.NET WebForm 4.5: what's new!! Massimo Bonanni http://codetailor.blogspot.com [email protected] @massimobonanni

Asp.net web form 4.5 - what's new!!

Embed Size (px)

DESCRIPTION

Slide 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

Citation preview

Page 1: Asp.net web form 4.5 - what's new!!

@Web@Work

ASP.NET WebForm 4.5: what's new!!

Massimo Bonannihttp://codetailor.blogspot.com

[email protected]@massimobonanni

Page 2: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

Moduli ed Handler asincroniLazy Request validationAnti-Cross Site ScriptingBundling e MinificationData Control tipizzati e Model BindingUnobtrusive validation…..dulcis in fundo

Agenda

Page 3: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

Ogni chiamata ad una risorsa Web è gestita da un thread.Il thread è occupato fino a che la richiesta non è servita.Il numero di thread a disposizione dell’application pool è limitato.Le performance possono degradare rapidamente all’aumentare delle richieste.

Moduli e Handler asincroni: perché?

Page 4: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

In un modulo asincrono il thread che prende in carico la richiesta non è detto sia il thread che la porta a compimento.

In questo modo i thread vengono presto rilasciati e la scalabilità migliore

Moduli asincroni

Page 5: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

La chiave di volta per ottenere l’asincronicità dei moduli è l’introduzione della parola chiave Async e dell’operatore Await.

Si realizza un normale HttpModule ASP.NET e si utilizza la EventHandlerAsyncHelper per la sottoscrizione degli eventi.

Moduli asincroni

Page 6: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

Anche per gli Handler vale il discorso fatto per i Moduli.

Se liberiamo il thread che ha in carico la richiesta dell’handler, otteniamo scalabilità!!!

Handler asincroni

Page 7: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

Per implementare un Handler asincrono si utilizza la classe base HttpTaskAsyncHandler anziché implementare l’interfaccia IHttpHandler.

Eseguiamo l’override del metodo ProcessRequestAsync (che, guarda caso ritorna un task ) ed il gioco è fatto!

Handler asincroni

Page 8: Asp.net web form 4.5 - what's new!!

@Web@Wor

kDemo

Moduli ed

Handler Asincro

ni

Page 9: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

ASP.NET verifica header, forms, querystring e cookie ad ogni richiesta.Se viene trovato un contenuto potenzialmente pericoloso…….

Lazy Request Validation

Page 10: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

ASP.NET 4.5 introduce la Lazy Request Validation:

• Si attiva nel web.config:<httpRuntime requestValidationMode="4.5" />

• ASP.NET controlla i dati solo quando effettivamente li richiediamo.• Request.Form("ID") non fa scattare il controllo su tutti i valori

della collection Form

• Da usare con cautela, se abusato può provocare catastrofi!!!

Lazy Request Validation

Page 11: Asp.net web form 4.5 - what's new!!

@Web@Wor

kDemo

Lazy Request Validati

on

Page 12: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

ASP.NET 4.5 integra nativamente la libreria Anti-Cross Site Scripting (AntiXSS)Il Cross Site Scripting è una vulnerabilità che si può riscontrare nei siti web e che favorisce gli attacchi in cui si inietta del codice client-side pericoloso.La libreria AntiXSS aiuta nello scongiurare la vulnerabilità da Cross Site Scripting

Anti-Cross Site Scripting (AntiXSS)

Page 13: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

La libreria non è attiva di default (è attiva nei nuovi progetti) e si può attivare con

<httpRuntime encoderType="System.Web.Security.AntiXss.AntiXssEncoder" />

Mette a disposizione una serie di metodi per encodare stringhe per diversi ambiti (HTML, CSS, Url, XML, etc., etc.,

Anti-Cross Site Scripting (AntiXSS)

Page 14: Asp.net web form 4.5 - what's new!!

@Web@Wor

kDemo

AntiXSSLibrary

Page 15: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

Una pagina web può avere diversi file CSS e Javascript.Ogni file è una richiesta al server.La pagina non può essere renderizzata fino a che non sono disponibili tutti i file.

Il Bundling consente di combinare assieme più files in un’unica richiesta.

Bundling e Minification

Page 16: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

Un file CSS o Javascript, oltre che informazioni utili allo scopo (classi di stile e istruzioni) contiene caratteri inutili (spazi, ritorni a capo, etc., etc.) che occupano spazio e banda.

La funzione di Minification compatta il contenuto di un file togliendo ciò che non serve allo scopo.

Bundling e Minification

Page 17: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

Bundling e Minification assieme riducono il numero di richieste al server e la quantità di dati che transitano rendendo più veloce la risposta del browser

Le due funzionalità sono presenti, «di serie», in ASP.NET 4.5 (sia Web Form che MVC).

Bundling e Minification

Page 18: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

Le classi deputate alle funzionalità di Bundling e Minification sono contenute nell’assembly Microsoft.Web.Optimization.dll e disponibili tramite NuGet.

Bundling e Minification

Page 19: Asp.net web form 4.5 - what's new!!

@Web@Wor

kDemo

Bundling &

Minification

Page 20: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

No More <%#Eval("ID")%> !!!!

Le stringhe vanno evitate come la peste perché eventuali errori appaiono solo a runtime!!!

Data Control tipizzati

Page 21: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

Nuovi controlli tipizzati:

<asp:Repeater ModelType="Customer"…><ItemTemplate>

<%#Item.ID%></ItemTemplate>

</asp:Repeater>

Nel binding Two-Way usiamo BindItem anziché Item.

Data Control tipizzati

Page 22: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

E’ stato introdotto il concetto di Model Binding: • possiamo legare la nostra Web Form ad

un modello (in stile MVC).

Il model binding lavora con IQueryable(Of T) • Ordinamento e paginazione• Se si usa EF, viene generata ad hoc la

query

Model Binding

Page 23: Asp.net web form 4.5 - what's new!!

@Web@Wor

kDemo

Data Control

& Model

Binding

Page 24: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

ASP.NET 4.5 introduce i validator unobtrusive stile MVC anche per le Web Form.

Il javascript generato dai validatori ASP.NET ≤4.0 non è mai stato aggiornato ed è decisamente vetusto!!

Nella nuova versione meno javascript da scaricare!!!

Unobtrusive validation

Page 25: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

I nuovi validator fanno uso degli attributi custom HTML "data-".

Nei progetti ASP.NET 4.5 vengono sempre utilizzati i nuovi validatori.

Nei progetti ASP.NET <4.5, si attivano con:• Globalmente, nel web.config:

<add name="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" />

• Sulla singola pagina impostando la proprietà Page.UnobtrusiveValidationMode su UnobtrusiveValidationMode.WebForm

Unobtrusive validation

Page 26: Asp.net web form 4.5 - what's new!!

@Web@Wor

kDemo

Unobtrusive

Validation

Page 27: Asp.net web form 4.5 - what's new!!

@Web@Wor

k

I controlli nativi HTML5 (ad esempio il <video>) hanno la controparte server

Il controllo TextBox ha una proprietà TextMode per gestire i nuovi tipi di input HTML5:

<asp:TextBox runat="server" TextMode="Email" />

Lo schema di default di una pagina creata con VS è quello di HTML5:

<!DOCTYPE html>

Dulcis in fundo

Page 28: Asp.net web form 4.5 - what's new!!

@Web@Wor

kQ&A

Page 29: Asp.net web form 4.5 - what's new!!

Web@WorkGrazie agli sponsor