novità di asp.net 4.0
DESCRIPTION
Sessione del workshop DotNetMarche+DotDotNet+DotNetUmbria incentrata sulle novità dell'ambiente Asp.NET 4.0TRANSCRIPT
![Page 1: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/1.jpg)
Asp.NET 4.0
Ricci Gian Maria
![Page 2: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/2.jpg)
Agenda
o Novità di Asp.NET 4.0o jQueryo Microsoft Ajaxo MVC2
![Page 3: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/3.jpg)
Autorun
o La prima richiesta effettuata ad una applicazione è lenta perchè il sistema deve inizializzare l’applicazione stessa
o IIS 7.5 permette di specificare l’application pool ed il site per effettuare un autostart
First Request
App Start
Response
![Page 4: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/4.jpg)
Autorun - applicationHost.config o Tutto quello che si deve fare è
configurare il file applicationHost.config
o <sites> <site name="MySite" id="1"> <application path="/" preloadEnabled="true" preloadProvider="PrewarmMyCache" > </application> </site> </sites>
o È anche possibile implementare l’interfaccia IProcessHostPreloadClient per eseguire codice custom durante l’inizializzazione
![Page 5: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/5.jpg)
Html Encodingo Per ragioni di sicurezza l’output HTML
deve essere codificato con Html-Encoded
o In ASP.NET 4.0 esiste una nuova sintassi<%: CodeExpression %>
o È anche possibile utilizzare altre librerie di html-encoding, Es. AntiXss ACE libraryo Ereditando dalla classe base HTTPEncodero Registrando la classe nel web.configo <system.web>
<httpRuntime encoderType="AntiXssEncoder, AssemblyName"/>
o La classe HtmlString serve invece ad indicare che il contenuto non deve essere sottoposto ad encoding
![Page 6: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/6.jpg)
ClientIdMode
o Uno dei problemi “storici” di asp.net è la difficoltà di conoscere l’id dei controlli nelle pagine in caso di controlli nested
o AspNet 4.0 introduce un nuovo attributo: ClientIdModeo AutoId: comportamento standardo Static: l’id non viene modificato con il
nome dei controlli parent.o Predictable: usato nel DataBound
assieme all’attributo ClientIDRowSuffix o Inherit: eredita la modalità del padre
![Page 7: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/7.jpg)
Smart Web.config
o Gestione intelligente del web.configo Il web.config ha un ulteriore file
correlato per ogni configurazione (Es. Web.Debug.config)
o Permette di effettuare trasformazioni per la configurazione prescelta durante la pubblicazione del sito
![Page 8: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/8.jpg)
Smart Web.configo Le configurazioni figlie sono
trasformazioni del file principaleo In questo modo vengono specificati
solamente i cambiamenti rispetto al file di configurazione principale.
<appSettings> <add key="MyValue" value="PREPRODUZIONE" xdt:Transform="Replace" xdt:Locator="Match(key)"/> </appSettings>
![Page 9: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/9.jpg)
Deploy
o Il comando “publish” ora permette una vera pubblicazione con diverse tecnologieo Web Deployo FTPo File Systemo FPSE (Front Page Server Extension)
o Web Packages – creazione di un setup con:o Tutto il contenuto dell’applicazione
asp.neto Impostazioni IIS, database SQLo Certificati
![Page 10: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/10.jpg)
Es. Deploy Ftp
o Specificando l’indirizzo dove si vuole deployare il sito e le credenziali viene automaticamente contattato l’ftp ed eseguito il deploy
Connecting to ftp://ftp.nablasoft.com/nablasoft.com/temp/testdeploy...
Transformed Web.config using Web.Debug.config into obj\Debug\TransformWebConfig\transformed\Web.config.
Copying all files to temporary location below for package/publish:obj\Debug\Package\PackageTmp.Publishing folder /...Publishing folder Account...Publishing folder bin...Publishing folder Scripts...
![Page 11: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/11.jpg)
Altre funzionalità
o Intellisense migliorato per javascripto Snippets che aiutano l’editing diretto
sul file di codiceo Il designer rispetta maggiormente
l’html che viene generato (Front Page Syndrome)
o CSS 2.1 compliance per il designero I controlli renderizzano XHTML Strict
1.0
![Page 12: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/12.jpg)
Altre funzionalità
o È possibile specificare la lunghezza massima delle url (prima limitate a 260)o <httpRuntime maxQueryStringLength=“xx”
maxRequestLength=“yyy”
o Attributo RenderOuterTable per ChangePassword, Login, FormView e PasswordRecovery control
o Session state comprimibile per sessioni non in process o <sessionState compressionEnabled=“true”
![Page 13: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/13.jpg)
Altre funzionalità
o Possibilità di implementare cache custom ereditando da OutputCacheProvider
o Possibilità di decidere il provider di cache a livello di applicazione o per le richieste individuali facendo override di GetOutputCacheProvider
o Facilitazione nell’implementare un proprio provider di cache grazie alle classi presenti in System.Runtime.Caching
![Page 14: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/14.jpg)
Funzionalità Ajax
![Page 15: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/15.jpg)
Microsoft AJAX
o Open source e disponibile su CodePlex http://aspnet.codeplex.com/
o Progetto attualmente in fase beta, seguite il sito per la data di release.
o Ajax control toolkit integrato nella libreria Microsoft Ajax principale
o Integrazione con jQueryo Supporto a jQuery tramite la CDN
Microsoft.
![Page 16: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/16.jpg)
Client Script Loader
o Si referenzia solamente lo script di Microsoft Ajax chiamato script.js
o Grazie a Sys.require() è possibile caricare dinamicamente i soli script necessario Caricamento parallelizzatoo Evita il caricamento di script duplicatio Gestione automatica delle dipendenzeo Usabile per caricare anche script customo Intellisense
![Page 17: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/17.jpg)
Client script lazy load
o Sys.loadScripts carica uno script javascript dinamicamente
o Utile per funzioni chiamate raramente e per velocizzare il caricamento della pagina
o Gestisce automaticamente la callback e permette di invocare una funzione quando lo script è completamente caricato
![Page 18: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/18.jpg)
Per chi ama lo ScriptManagero Il controllo ScriptManager ha due
nuovi interessanti attributio EnableCdn – permette di scegliere se gli
script vengono caricati dalla cdn. Usabile anche con script propri Es. [assembly: WebResource("Foo.js", "application/x-javascript", CdnPath = "http://foo.com/foo/bar/foo.js")]
o AjaxFrameworkMode:o Disabled: non carica nessuno script baseo Explicit: possibilità di scegliere cosa caricare
o CompositeScript: combina più script in uno solo ed automaticamente effettua encoding gzip
![Page 19: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/19.jpg)
Client side rendering
o In una richiesta classica il browser effettua una richiesta al server che risponde con una pagina o con uno snippet HTML
Request
HTML Response
![Page 20: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/20.jpg)
Client side rendering
o Tramite il Client Side Rendering il server risponde inviando i dati con serializzazione JSON
o L’HTML viene costruito nel browser.
Request
JSON ResponseHTML Generation
![Page 21: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/21.jpg)
MVC2
![Page 22: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/22.jpg)
MVC o Asp.NET Web Form?
o MVC2 permette di avere pieno controllo sull’html generato
o La logica di interfaccia è «unit-testabile»
o Open sourceo Possibilità di usare entrambe le
tecnologie in uno stesso sito
![Page 23: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/23.jpg)
Architettura di MVCRequest
Controller
Response
Model
View
Asp.Net MVC
Viene passato alla
Inviata al server
Prepara il
Determina la
Genera la
http://msdn.microsoft.com/en-us/library/dd381412.aspx
Identifica ed istanzia
![Page 24: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/24.jpg)
Routingo Associazione di una chiamata ad un
handlero Urlo Variabili di posto Variabili di get
o MVC2 imposta un route particolare che identifica un controller ed una action
o Possono essere aggiunte route specifiche
![Page 25: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/25.jpg)
Routing
http://bit.ly/9gyPkM
In Asp.Net 4 il sistema di routing è utilizzabile anche per applicazioni webforms.
Asp.Net MVC 1/2
WebForms 4
![Page 26: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/26.jpg)
Aree
o È possibile suddividere il sito in aree
o Ogni area possiede i propri controller, view e model
o Garantiscono una maggiore modularità nella gestione del sito
o Vanno registrate manualmente in fase di startup
![Page 27: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/27.jpg)
Areas - ActionLink
http://msdn.microsoft.com/en-us/library/ee671793.aspx
•Per “entrare” in un’area è necessario indicarne il nome
•Se l’area non è indicata la default è l’area corrente.
•Per tornare alla “root” indicare {area=String.Empty}
![Page 28: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/28.jpg)
UI Helper con lambda expressiono Permettono di avere un maggiore
supporto al refactoring ed intellisenseo Generano errori a compile time se
abilitate la compilazione delle view
![Page 29: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/29.jpg)
Data Annotation
o Attributi da inserire sul modello per indicare all’infrastruttura alcune caratteristiche del modello stesso
o Specificare requisiti di validazioneo Requiredo StringLength
o Indicare il tipo di interfaccia richiesta Es: Richiesta di editor multiline
![Page 30: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/30.jpg)
Validazione
o La validazione si applica al modelloo Viene automaticamente fatta sulla
base delle Data Annotationo Esistono helper appositi per la
creazione dei validatori in maniera automatica
o I validatori sono sia lato client che lato server
![Page 31: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/31.jpg)
Validazione
o Grazie alle Data Annotation è possibile decidere il messaggio di errore
![Page 32: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/32.jpg)
Scaffolding
o Sono presenti metodi di scaffolding che permettono di autogenerare le interfacce per un modello
o I due metodi principali sono Html.DysplayForModel e Html.EditForModel
o È comunque possibile generare template custom per i propri modelli se necessarioo Il template è una partial view che ha per
nome il tipo del dato da rappresentare ed è memorizzato nelle cartelle EditorTemplates o DisplayTemplates
![Page 33: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/33.jpg)
RenderAction
o Html.RenderAction permette di renderizzare una action da una vista “contenitore”
o Si può in questo modo aumentare la componentizzazione
o Grazie all’attributo ChildActionOnly è possibile specificare che una azione è utilizzabile solamente tramite RenderAction.
![Page 34: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/34.jpg)
RenderAction
http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
L’introduzione dell’helper Html.RenderAction rende possibile la componentizzazione dell’applicazione.
In questo modo anche le logiche di business diventano riutilizzabili eliminando duplicazioni di codice
E’ possibile limitare l’utilizzo di una determinata action alla sola RenderAction (evitando così di esporla tramite url) decorando l’action con [ChildActionOnly]
![Page 35: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/35.jpg)
Domande
![Page 36: Novità di Asp.Net 4.0](https://reader031.vdocuments.net/reader031/viewer/2022013108/5564336fd8b42a06138b4e62/html5/thumbnails/36.jpg)
© 2010 Microsoft Corporation. All rights reserved. Microsoft, Visual Studio, the Visual Studio logo, and [list other trademarks referenced] are trademarks of the Microsoft group of companies.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond
to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.