novità di asp.net 4.0
DESCRIPTION
Sessione del workshop DotNetMarche+DotDotNet+DotNetUmbria incentrata sulle novità dell'ambiente Asp.NET 4.0TRANSCRIPT
Asp.NET 4.0
Ricci Gian Maria
Agenda
o Novità di Asp.NET 4.0o jQueryo Microsoft Ajaxo MVC2
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
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
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
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
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
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>
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
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...
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
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”
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
Funzionalità Ajax
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.
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
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
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
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
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
MVC2
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
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
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
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
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
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}
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
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
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
Validazione
o Grazie alle Data Annotation è possibile decidere il messaggio di errore
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
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.
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]
Domande
© 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.