2. Web@Work
Agenda
Moduli ed Handler asincroni
Lazy Request validation
Anti-Cross Site Scripting
Bundling e Minification
Data Control tipizzati e Model Binding
Unobtrusive validation
…..dulcis in fundo
3. Moduli e Handler asincroni: Web@Work
perché?
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.
4. Web@Work
Moduli asincroni
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
5. Web@Work
Moduli asincroni
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.
6. Web@Work
Handler asincroni
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à!!!
7. Web@Work
Handler asincroni
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!
9. Web@Work
Lazy Request Validation
ASP.NET verifica header, forms, querystring e
cookie ad ogni richiesta.
Se viene trovato un contenuto potenzialmente
pericoloso…….
10. Web@Work
Lazy Request Validation
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!!!
12. Web@Work
Anti-Cross Site Scripting (AntiXSS)
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
13. Web@Work
Anti-Cross Site Scripting (AntiXSS)
La libreria non è attiva di default (è attiva nei
nuovi progetti) e si può attivare con
<httpRuntime
encoderType="System.Web.Security.AntiXss.AntiXs
sEncoder" />
Mette a disposizione una serie di metodi per
encodare stringhe per diversi ambiti (HTML,
CSS, Url, XML, etc., etc.,
15. Web@Work
Bundling e Minification
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.
16. Web@Work
Bundling e Minification
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.
17. Web@Work
Bundling e Minification
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).
18. Web@Work
Bundling e Minification
Le classi deputate alle funzionalità di
Bundling e Minification sono contenute
nell’assembly Microsoft.Web.Optimization.dll
e disponibili tramite NuGet.
20. Web@Work
Data Control tipizzati
No More <%#Eval("ID")%> !!!!
Le stringhe vanno evitate come
la peste perché eventuali errori
appaiono solo a runtime!!!
21. Web@Work
Data Control tipizzati
Nuovi controlli tipizzati:
<asp:Repeater ModelType="Customer"…>
<ItemTemplate>
<%#Item.ID%>
</ItemTemplate>
</asp:Repeater>
Nel binding Two-Way usiamo BindItem
anziché Item.
22. Web@Work
Model Binding
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
24. Web@Work
Unobtrusive validation
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!!!
25. Web@Work
Unobtrusive validation
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
27. Web@Work
Dulcis in fundo
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>