Slide e codice lo potete trovare a questo link:
http://blog.dottor.net/post/2012/09/18/Codice-e-slide-della-sessione-Whats-New-in-ASPNET-45-and-Visual-Studio-2012.aspx
Il Microsoft .NET Framework è in continua evoluzione, e con la prossima versione verranno rilasciate interessanti funzionalità riguardanti ASP.NET.All'interno di questa sessione conosceremo tutte queste novità, ed andremo invece più in dettaglio in alcune di esse, permettendo a chi conosce già ASP.NET di poter essere più produttivo (Strongly Typed Data Controls, Model Binding, Asynchronous, WebSocket, ... ), mentre, per chi invece non ha molta esperienza con questa tecnologia, potrà vedere come i nuovi template di progetto e Visual Studio 2012 potranno aiutarlo ad approcciare correttamente queste tipologie di applicazioni.
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
What's New in ASP.NET 4.5 and Visual Studio 2012
1. What's New in ASP.NET 4.5 and Visual Studio 2012
• Andrea Dottor – Microsoft MVP ASP.NET/IIS
2. Contatti
o Feedback su:
• http://xedotnet.org/feedback
Email: andrea@dottor.net
Blog: http://blog.dottor.net
Twitter: http://twitter.com/dottor
feedback
10
3. Agenda
Visual Studio 2012 Editor
ASP.NET 4.5 WebForm
Security
Performance
ASP.NET 4.5 MVC 4 (nel parleremo nel meeting «Sviluppo di applicazioni mobile con ASP.NET MVC 4»)
3
5. HTML Editor – cosa c’è di nuovo?
Supporto ad HTML5
Migliorato intellisense
Maggiori snippet
Pieno supporto agli attributi WAI-ARIA
Smart Tag anche in modalità source
Generazione automatica degli Event handler
Extract to user control
5
6. CSS Editor – cosa c’è di nuovo?
Introduzione degli snippet
Intellisense anche nella creazione dei selettori
Color picker
Supporto ai commenti (da shortcuts)
Vendor specific schemas
Indentazione gerarchica
6
7. JavaScript Editor – cosa c’è di nuovo?
Migliorato intellisense
Intellisense filtrato a seconda del contesto, del tipo di dato, ...
DOM Intellisense, aggiunto supporto ad HTML5
Intellisense abilitato in tutti i file javascript, centralizzando i
/// <reference /> in un’unico file
VSDOC signature overloads
Aggiunta la funzionalità Go to Definition
7
8. Page Inspector
Apre il website all’interno di visual studio
Fornisce funzionalità simili alla Developer Toolbar
Analisi dell’HTML della pagina
Analisi del singolo elemento nel DOM della pagina
Visione degli stili applicati
Permette di capire quale controllo/codice abbia generato l’HTML
Permette di trovare il sorgente di un preciso stile CSS
8
10. Strongly Typed Data Controls
Permette di avere l’intellisense per specificare i campi da
porre in binding
Nei Data Control è stata aggiunta una proprietà ItemType
dove specificare il tipo di dato in binding
Item.* e BindItem.* per specificare le proprietà in binding
<asp:FormView runat="server" ID="editCustomer" ItemType="Dottor.SampleApplication.Employee">
<EditItemTemplate>
<div>
<asp:TextBox ID="firstName" runat="server" Text='<%# BindItem.FirstName %>' />
</div>
<div>
<asp:TextBox ID="lastName" runat="server" ='<%# BindItem.LastName %>' />
</div>
<asp:Button runat="server" CommandName="Update"/>
</EditItemTemplate>
</asp:FormView>
10
11. Model Binding - Selecting data
Aggiunta delle funzionalità di «data source» ai Data Control
di ASP.NET
es: GridView, ListView, FormView, ...
Prende spunto dal model binding di ASP.NET MVC
Consumo di dati esposti come IEnumerable o IQuerable
<asp:GridView ID="categoriesGrid" runat="server"
AutoGenerateColumns="false"
AllowSorting="true" AllowPaging="true" PageSize="5"
ItemType="WebApplication1.Model.Category" DataKeyNames="CategoryID"
SelectMethod="GetCategories"
UpdateMethod="UpdateCategory">
[...]
11
12. Model Binding - Value providers
Nuovi attributi da associare ai parametri di un metodo, che
permettono di specificare da dove recuperare le
informazioni/valore
Stesso comportamento dei Parameter dei controlli DataSource
es: QueryStringAttribute
public IQueryable<Product> GetProducts([QueryString]string keyword)
{
[...]
12
13. Model Binding - Filtering by values from a control
Tramite attributi è possibile recuperare valori anche da
controlli contenuti all’interno della pagina
Nel costruttore degli attributi è possibile specificare il nome
del campo o del controllo da utilizzare per recuperare il dato
public IQueryable<Product> GetProducts(
[QueryString("q")] string keyword,
[Control("categories")] int? categoryId)
{
[...]
13
14. Bundling and Optimization
Bundling: permette di unire più file JavaScript e CSS in un unico file
Minification: rimozione degli spazi ed altri caratteri «non utili», in
modo da ridurre la dimensione dei file
PRO: Ottimizzazione delle request
PRO: Meno byte che transitano
Possibilità di differenziare gli script tra debug e release tramite
l’attributo debug del tag compilation nel web.config
Vedere il file BundleConfig.cs dentro la carella App_Start e il file
Bundle.config
14
15. Bundling and Optimization
Chang
Using B/M Without B/M
e
File Requests 9 34 256%
KB Sent 3.26 11.92 266%
KB Received 388.51 530 36%
Load Time 510 MS 780 MS 53%
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification
15
16. OAuth in the Default Templates
Nei template di default è stata aggiunta la possibilità di
eseguire login tramite le credenziali di vari social network
utilizzando l’autenticaizone Oauth
Basato sulla libreria DotNetOpenAuth
Login tramite Microsoft Account, Facebook, Twitter, Google
Possibilità di aggiunta di altri provider di autenticazione
Vedere il file AuthConfig.cs dentro la carella App_Start
http://blogs.msdn.com/b/webdev/archive/2012/08/15/oauth-openid-support-for-webforms-mvc-and-webpages.aspx
16
17. Suppor t for WebSockets Protocol
WebSockets è un protocollo standard che permette la
comunicazione tra client e server
Fornisce una comunicazione long-running
Con ASP .NET 4.5 sono state aggiunte classi che permettono
l’utilizzo di WebSocket in modo asincrono System.Web.WebSockets
Le Web Sockets API rientrano tra le specifiche di HTML5
http://www.w3.org/TR/2009/WD-websockets-20091222/
Solamente con ASP.NET 4.5 su IIS 8
17
19. New ASP.NET Request Validation Features
Deferred ("lazy") request validation
i dati in post vengono validati solo quando vengono letti
Possibilità di accedere ai dati senza che venga eseguita la
validazione tramite HttpRequest.Unvalidated
vengono validati i dati contenuti in Form, QueryString,
Cookies, e Url
<httpRuntime requestValidationMode="4.5" ... />
var s = context.Request.Unvalidated.Form["blog_post"];
19
20. AntiXSS Librar y
Vista la popolarità di Microsoft AntiXSS Library, questa è stata
inclusa all’interno del framework all’interno del namespace
System.Web.Security
E’ disponibile anche su codeplex http://wpl.codeplex.com/
Permette di eseguire l’encoding delle stringhe che devono
comparire all’interno dell’HTML, permettendo (tramite
opportuni algoritmi) di non far passare eventuali attacchi XSS
Può essere sostituita a quella di default utilizzata da ASP
<httpRuntime ... .NET
encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
20
22. Suppor t for await and Task-Based Asynchronous Modules and
Handlers
Creazione di HttpHandler e HttpModule asincroni con il supporto
di async-await
Alleggeriscono/migliorano il carico sul server in quanto
ottimizzano l’uso dei thread
Per un HttpHandler, di deve implementare HttpTaskAsyncHandler
public class MyAsyncHandler : HttpTaskAsyncHandler
{
public override async Task ProcessRequestAsync(HttpContext context)
{
// Do something
}
}
22
23. Suppor t for await and Task-Based Asynchronous Modules and
Handlers
Per un HttpModule utilizzare i metodi di helper esposti dalla
classe EventHandlerTaskAsyncHelper in modo da permettere
l’uso di metodi asincroni all’interno della normale pipeline di
ASP .NET che è sincrona
public void Init(HttpApplication context)
{
EventHandlerTaskAsyncHelper helper =
new EventHandlerTaskAsyncHelper(MioMetodoAsincrono);
context.AddOnPostAuthorizeRequestAsync(
helper.BeginEventHandler,
helper.EndEventHandler);
}
23
24. Web Publishing Improvements
Le informazione relative ai profili di pubblicazione vengono
salvati all’interno della cartella PublishProfiles
Possibilità di condividere le informazioni tra i membri del team
Possibilità di salvare le informazioni nel controllo sorgente
Possono venire utilizzate da msbuild.exe per pubblicare
l’applicazione dopo la compilazione
msbuild.exe project.csproj /t:WebPublish /p:PublishProfile=ProfileName
24
25. Multi-Core JIT compilation for faster star tup
Nel Framework 4.5 il compilatore JIT è stato migliorato /
ottimizzato per l’utilizzo di più core
Riduzione dei tempi del primo avvio di un’applicazione
Abilitato di default per le applicazione ASP.NET
25
26. ASP.NET precompilation and merge
Possibilità di precompilare una Web Application
Permette di ridurre ulteriormente i tempi del primo avvio
dell’applicazione
Per attivarlo, settare il flag «precompile this application before
publishing» nelle proprietà del progetto
26
28. Voglio sperimentare una nuova strada
Screencast pubblicati su
Iniziando dal materiale di questo meeting
6 video già registrati e pronti ad uscire
40 minuti di video
A partire dalla prossima settimana
Aspetto un vostro feedback
http://www.youtube.com/user/andreadottor
28
29. Contatti
o Feedback su:
• http://xedotnet.org/feedback
Email: andrea@dottor.net
Blog: http://blog.dottor.net
Twitter: http://twitter.com/dottor
feedback
10
Editor's Notes
WAI-ARIA = Web Accessibility Initiative - Accessible Rich Internet Applications