what's new in asp.net 4.5 and visual studio 2012
DESCRIPTION
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.TRANSCRIPT
• Andrea Dottor – Microsoft MVP ASP.NET/IIS
What's New in ASP.NET 4.5 and Visual Studio 2012
feedback
10
o Feedback su:
• http://xedotnet.org/feedback
Email: [email protected]: http://blog.dottor.netTwitter: http://twitter.com/dottor
Contatti
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»)
Visual Studio2012
ASP.NET Editor
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
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
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
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
ASP.NET 4.5
WebForm
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>
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">
[...]
<asp:GridView ID="categoriesGrid" runat="server" AutoGenerateColumns="false" AllowSorting="true" AllowPaging="true" PageSize="5" ItemType="WebApplication1.Model.Category" DataKeyNames="CategoryID" SelectMethod="GetCategories" UpdateMethod="UpdateCategory">
[...]
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: QueryStringAttributepublic IQueryable<Product> GetProducts([QueryString]string keyword){
[...]
public IQueryable<Product> GetProducts([QueryString]string keyword){
[...]
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 datopublic IQueryable<Product> GetProducts( [QueryString("q")] string keyword, [Control("categories")] int? categoryId) {
[...]
public IQueryable<Product> GetProducts( [QueryString("q")] string keyword, [Control("categories")] int? categoryId) {
[...]
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 requestPRO: 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
15
Bundling and Optimization
Using B/M Without B/M Change
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
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
17
Support 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 HTML5http://www.w3.org/TR/2009/WD-websockets-20091222/
Solamente con ASP.NET 4.5 su IIS 8
Security
Image Credit: InThePersonalCloud
19
New ASP.NET Request Validation Features
Deferred ("lazy") request validationi 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"];
20
AntiXSS Library
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.NET
<httpRuntime ... encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
Performance
22
Support 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 HttpTaskAsyncHandlerpublic class MyAsyncHandler : HttpTaskAsyncHandler{ public override async Task ProcessRequestAsync(HttpContext context) { // Do something }}
23
Support 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 è sincronapublic void Init(HttpApplication context){ EventHandlerTaskAsyncHelper helper =
new EventHandlerTaskAsyncHelper(MioMetodoAsincrono); context.AddOnPostAuthorizeRequestAsync(
helper.BeginEventHandler, helper.EndEventHandler);
}
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
25
Multi-Core JIT compilation for faster startup
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
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
Domande? Dubbi?Voglia di migrare subito ad ASP.NET 4.5?
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
feedback
10
o Feedback su:
• http://xedotnet.org/feedback
Email: [email protected]: http://blog.dottor.netTwitter: http://twitter.com/dottor
Contatti