SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
ASP.NET WebForm 4.5: what's
          new!!
         Massimo Bonanni
       http://codetailor.blogspot.com
    massimo.bonanni@domusdotnet.org
             @massimobonanni




      Web@Work
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
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.
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
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.
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à!!!
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!
Web@Work
Demo




       Moduli ed
        Handler
       Asincroni
Web@Work
Lazy Request Validation

ASP.NET verifica header, forms, querystring e
cookie ad ogni richiesta.
Se viene trovato un contenuto potenzialmente
pericoloso…….
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!!!
  
Web@Work
Demo




         Lazy
       Request
       Validatio
           n
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
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.,
Web@Work
Demo




       AntiXSS
       Library
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.
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.
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).
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.
Web@Work
Demo




       Bundling
           &
       Minificatio
           n
Web@Work
Data Control tipizzati


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

Le stringhe vanno evitate come
la peste perché eventuali errori
appaiono solo a runtime!!!
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.
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
Web@Work
Demo




       Data Control
            &
          Model
         Binding
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!!!
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
Web@Work
Demo




       Unobtrusi
           ve
       Validation
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>
Web@Work
Q&A
Web@Work
Grazie agli sponsor

Contenu connexe

Tendances

What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)Luca Milan
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaSviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaMarco Breveglieri
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroAndrea Dottor
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webAndrea Dottor
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailStefano Ottaviani
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiMarco Breveglieri
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMCodemotion
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETStefano Ottaviani
 
ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008Fabrizio Bernabei
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Fabrizio Bernabei
 
Dal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersDal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersAndrea Dottor
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Codemotion
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal WebtrendsStefano Iaboni
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleMarco Breveglieri
 

Tendances (20)

What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaSviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
 
ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuro
 
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del webASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
ASP.NET 4.6 e ASP.NET 5...l'evoluzione del web
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e Delphi
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
 
Generazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NETGenerazione Dinamica di Codice in .NET
Generazione Dinamica di Codice in .NET
 
ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 
Dal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developersDal RenderFragment ai Generics, tips for Blazor developers
Dal RenderFragment ai Generics, tips for Blazor developers
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal Webtrends
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarle
 

En vedette

What's new in ASP.NET 4.0
What's new in ASP.NET 4.0What's new in ASP.NET 4.0
What's new in ASP.NET 4.0XeDotNet
 
EtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows BridgeEtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows BridgeGaetano Paternò
 
Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Andrea Dottor
 
ASP.NET MVC 2.0
ASP.NET MVC 2.0ASP.NET MVC 2.0
ASP.NET MVC 2.0XeDotNet
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreAndrea Dottor
 
More Little Wonders of C#/.NET
More Little Wonders of C#/.NETMore Little Wonders of C#/.NET
More Little Wonders of C#/.NETBlackRabbitCoder
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NETPeter Gfader
 

En vedette (9)

What's new in ASP.NET 4.0
What's new in ASP.NET 4.0What's new in ASP.NET 4.0
What's new in ASP.NET 4.0
 
EtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows BridgeEtnaDev 2015 - Windows Bridge
EtnaDev 2015 - Windows Bridge
 
Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5Crea servizi REST per la tua App con ASP.NET 5
Crea servizi REST per la tua App con ASP.NET 5
 
ASP.NET MVC 2.0
ASP.NET MVC 2.0ASP.NET MVC 2.0
ASP.NET MVC 2.0
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Introduzione ad ASP.NET Core
Introduzione ad ASP.NET CoreIntroduzione ad ASP.NET Core
Introduzione ad ASP.NET Core
 
More Little Wonders of C#/.NET
More Little Wonders of C#/.NETMore Little Wonders of C#/.NET
More Little Wonders of C#/.NET
 
Of Lambdas and LINQ
Of Lambdas and LINQOf Lambdas and LINQ
Of Lambdas and LINQ
 
Introduction to ASP.NET
Introduction to ASP.NETIntroduction to ASP.NET
Introduction to ASP.NET
 

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

Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012Crismer La Pignola
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the WebClaudio Gandelli
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client Sabino Labarile
 
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%DomusDotNet
 
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsClaudio Bosticco
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?Giorgio Di Nardo
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailDotNetMarche
 
Customize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingCustomize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingAndrea Dottor
 
Self hosted Services with .NET OWin
Self hosted Services with .NET OWinSelf hosted Services with .NET OWin
Self hosted Services with .NET OWinNicolò Carandini
 
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...Federico Villa
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAndrea Balducci
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP WayLuca Milan
 

Similaire à Asp.net web form 4.5 - what's new!! (20)

Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
Asp net (versione 1 e 2)
Asp net (versione 1 e 2)Asp net (versione 1 e 2)
Asp net (versione 1 e 2)
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 
Powerful asp.net 4 e ie9
Powerful asp.net 4 e ie9Powerful asp.net 4 e ie9
Powerful asp.net 4 e ie9
 
Web api 2.0
Web api 2.0Web api 2.0
Web api 2.0
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%
 
SmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applicationsSmartClient by Isomorphic - Rich internet applications
SmartClient by Isomorphic - Rich internet applications
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
Customize ASP.NET Core scaffolding
Customize ASP.NET Core scaffoldingCustomize ASP.NET Core scaffolding
Customize ASP.NET Core scaffolding
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Self hosted Services with .NET OWin
Self hosted Services with .NET OWinSelf hosted Services with .NET OWin
Self hosted Services with .NET OWin
 
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
Tesi Triennale: Navigazione automatica e rilevazione di errori in applicazion...
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community Tour
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
 

Plus de Massimo Bonanni

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Massimo Bonanni
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure FunctionsMassimo Bonanni
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsMassimo Bonanni
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Massimo Bonanni
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure FunctionsMassimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Massimo Bonanni
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsMassimo Bonanni
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Massimo Bonanni
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftMassimo Bonanni
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Massimo Bonanni
 

Plus de Massimo Bonanni (20)

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure Functions
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure Functions
 
IoT in salsa serverless
IoT in salsa serverlessIoT in salsa serverless
IoT in salsa serverless
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure Functions
 
IoT in salsa Serverless
IoT in salsa ServerlessIoT in salsa Serverless
IoT in salsa Serverless
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable Functions
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!
 

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

  • 1. ASP.NET WebForm 4.5: what's new!! Massimo Bonanni http://codetailor.blogspot.com massimo.bonanni@domusdotnet.org @massimobonanni Web@Work
  • 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!
  • 8. Web@Work Demo Moduli ed Handler Asincroni
  • 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!!! 
  • 11. Web@Work Demo Lazy Request Validatio n
  • 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.,
  • 14. Web@Work Demo AntiXSS Library
  • 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.
  • 19. Web@Work Demo Bundling & Minificatio n
  • 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
  • 23. Web@Work Demo Data Control & Model Binding
  • 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
  • 26. Web@Work Demo Unobtrusi ve Validation
  • 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>