3. Autorun La prima richiestaeffettuata ad unaapplicazione è lentaperchèilsistemadeveinizializzarel’applicazionestessa IIS 7.5 permettedispecificarel’application pool edil site per effettuare un autostart
4. Autorun - applicationHost.config Tuttoquellochesideve fare è configurareil file applicationHost.config <sites> <site name="MySite" id="1"> <application path="/" preloadEnabled="true" preloadProvider="PrewarmMyCache" > </application> </site> </sites> È anchepossibileimplementarel’interfacciaIProcessHostPreloadClientper eseguirecodice custom durantel’inizializzazione
5. Html Encoding Per ragionidisicurezzal’output HTML deveesserecodificato con Html-Encoded In ASP.NET 4.0 esisteunanuovasintassi<%:CodeExpression%> È anchepossibileutilizzarealtrelibreriedi html-encoding, Es. AntiXssACE library Ereditandodallaclasse base HTTPEncoder Registrando la classenelweb.config <system.web> <httpRuntimeencoderType="AntiXssEncoder, AssemblyName"/> La classe HtmlString serve invece ad indicare che il contenuto non deve essere sottoposto ad encoding
6. ClientIdMode Uno dei problemi “storici” di asp.net è la difficoltà di conoscere l’id dei controlli nelle pagine in caso di controlli nested AspNet 4.0 introduce un nuovo attributo: ClientIdMode AutoId: comportamento standard Static: l’id non viene modificato con il nome dei controlli parent. Predictable: usato nel DataBound assieme all’attributo ClientIDRowSuffix Inherit: eredita la modalità del padre
7. Smart Web.config Gestione intelligente del web.config Il web.config ha un ulteriore file correlato per ogni configurazione (Es. Web.Debug.config) Permette di effettuare trasformazioni per la configurazione prescelta durante la pubblicazione del sito
8. Smart Web.config Le configurazioni figlie sono trasformazioni del file principale In questo modo vengono specificati solamente i cambiamenti rispetto al file di configurazione principale. <appSettings> <addkey="MyValue" value="PREPRODUZIONE" xdt:Transform="Replace" xdt:Locator="Match(key)"/> </appSettings>
9. Deploy Il comando “publish” ora permette una vera pubblicazione con diverse tecnologie Web Deploy FTP File System FPSE (FrontPage Server Extension) Web Packages – creazione di un setup con: Tutto il contenuto dell’applicazione asp.net Impostazioni IIS, database SQL Certificati
10. Es. Deploy Ftp Specificando l’indirizzo dove si vuole deployare il sito e le credenziali viene automaticamente contattato l’ftp ed eseguito il deploy Connectingto ftp://ftp.nablasoft.com/nablasoft.com/temp/testdeploy... TransformedWeb.configusingWeb.Debug.configinto objebugransformWebConfigransformedeb.config. Copying all files to temporary location below for package/publish: objebugackageackageTmp. Publishing folder /... Publishing folder Account... Publishing folder bin... Publishing folder Scripts...
11. Altre funzionalità Intellisense migliorato per javascript Snippets che aiutano l’editing diretto sul file di codice Il designer rispetta maggiormente l’html che viene generato (FrontPageSyndrome) CSS 2.1 compliance per il designer I controlli renderizzano XHTML Strict1.0
12. Altre funzionalità È possibile specificare la lunghezza massima delle url (prima limitate a 260) <httpRuntimemaxQueryStringLength=“xx” maxRequestLength=“yyy” Attributo RenderOuterTable per ChangePassword, Login, FormView e PasswordRecoverycontrol Session state comprimibile per sessioni non in process <sessionStatecompressionEnabled=“true”
13. Altre funzionalità Possibilità di implementare cache custom ereditando da OutputCacheProvider Possibilità di decidere il provider di cache a livello di applicazione o per le richieste individuali facendo override di GetOutputCacheProvider Facilitazione nell’implementare un proprio provider di cache grazie alle classi presenti in System.Runtime.Caching
15. Microsoft AJAX Open source e disponibile su CodePlexhttp://aspnet.codeplex.com/ Progetto attualmente in fase beta, seguite il sito per la data di release. Ajax control toolkit integrato nella libreria Microsoft Ajax principale Integrazione con jQuery Supporto a jQuery tramite la CDN Microsoft.
16. Client Script Loader Si referenzia solamente lo script di Microsoft Ajax chiamato script.js Grazie a Sys.require() è possibile caricare dinamicamente i soli script necessari Caricamento parallelizzato Evita il caricamento di script duplicati Gestione automatica delle dipendenze Usabile per caricare anche script custom Intellisense
17. Client script lazyload Sys.loadScripts carica uno script javascript dinamicamente Utile per funzioni chiamate raramente e per velocizzare il caricamento della pagina Gestisce automaticamente la callback e permette di invocare una funzione quando lo script è completamente caricato
18. Per chi ama lo ScriptManager Il controllo ScriptManager ha due nuovi interessanti attributi 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")] AjaxFrameworkMode: Disabled: non carica nessuno script base Explicit: possibilità di scegliere cosa caricare CompositeScript: combina più script in uno solo ed automaticamente effettua encodinggzip
19. Client side rendering Request HTML Response In una richiesta classica il browser effettua una richiesta al server che risponde con una pagina o con uno snippet HTML
20. Client side rendering Request JSON Response HTML Generation Tramite il Client Side Rendering il server risponde inviando i dati con serializzazione JSON L’HTML viene costruito nel browser.
22. MVC o Asp.NET Web Form? MVC2 permette di avere pieno controllo sull’html generato La logica di interfaccia è «unit-testabile» Open source Possibilità di usare entrambe le tecnologie in uno stesso sito
23. Architettura di MVC Request Inviata al server Asp.Net MVC Identifica ed istanzia Prepara il Controller Model Determina la View Viene passato alla Genera la Response http://msdn.microsoft.com/en-us/library/dd381412.aspx
24. Routing Associazione di una chiamata ad un handler Url Variabili di post Variabili di get MVC2 imposta un route particolare che identifica un controller ed una action Possono essere aggiunte route specifiche
25. Routing In Asp.Net 4 il sistema di routing è utilizzabile anche per applicazioni webforms. Asp.Net MVC 1/2 WebForms 4 http://bit.ly/9gyPkM
26. Aree È possibile suddividere il sito in aree Ogni area possiede i propri controller, view e model Garantiscono una maggiore modularità nella gestione del sito Vanno registrate manualmente in fase di startup
27. Areas Organizzazione dei progetti in aree funzionali In ogni area è possibile definire controllers, models e views Le aree vanno attivate in fasi di startup dell’applicazione web. http://msdn.microsoft.com/en-us/library/ee671793.aspx
30. Areas - Routes Registrare ogni route con il relativo namespace per evitare collisioni http://msdn.microsoft.com/en-us/library/ee671793.aspx
31. Areas - Routes Registrazione con namedargument (C# 4) Registrazione classica http://msdn.microsoft.com/en-us/library/ee671793.aspx
32.
33. Se l’area non è indicata la default è l’area corrente.
34. Per tornare alla “root” indicare {area=String.Empty}http://msdn.microsoft.com/en-us/library/ee671793.aspx
35. UI Helper con lambda expression Permettono di avere un maggiore supporto al refactoring ed intellisense Generano errori a compile time se abilitate la compilazione delle view
36. Data Annotation Attributi da inserire sul modello per indicare all’infrastruttura alcune caratteristiche del modello stesso Specificare requisiti di validazione Required StringLength Indicare il tipo di interfaccia richiesta Es: Richiesta di editormultiline
37. DataAnnotations Permettono di decorare il modello dati dell’applicazione tramite attributi E’possibile, per esempio, indicare che un valore è obbligatorio o che una stringa richiede un editormultiline http://bit.ly/L5J9
38. DataAnnotations Q: Perché MultilineText e non TextArea? R: DataAnnotations è indipendente dal framework della UI Q: Se è indipendente dalla UI come viene gestita da MVC? R: DataAnnotationsModelMetadataProvider DataAnnotationsModelValidatorProvider Q: Se il mio model è autogenerato come posso annotarlo? R: [MetadataType(typeof(MyModelMetadata))] http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.html
39. Validazione La validazione si applica al modello Viene automaticamente fatta sulla base delle Data Annotation Esistono helper appositi per la creazione dei validatori in maniera automatica I validatori sono sia lato client che lato server
41. Scaffolding Sono presenti metodi di scaffolding che permettono di autogenerare le interfacce per un modello I due metodi principali sono Html.DysplayForModel e Html.EditForModel È comunque possibile generare template custom per i propri modelli se necessario Il template è una partialview che ha per nome il tipo del dato da rappresentare ed è memorizzato nelle cartelle EditorTemplates o DisplayTemplates
42. RenderAction Html.RenderAction permette di renderizzare una action da una vista “contenitore” Si può in questo modo aumentare la componentizzazione Grazie all’attributo ChildActionOnly è possibile specificare che una azione è utilizzabile solamente tramite RenderAction.
43. RenderAction L’introduzione dell’helperHtml.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] http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx