Novità di Asp.Net 4.0

1,252 views

Published on

Sessione del workshop DotNetMarche+DotDotNet+DotNetUmbria incentrata sulle novità dell'ambiente Asp.NET 4.0

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,252
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Finita questa slide passare nel codice e fare vedere le trasformazioni possibili
  • Fare la demo delle funzionalità di pubblicazione del sito.
  • Fare vedere the textbox e requiredfieldvalidator
  • Fare vedere the textbox e requiredfieldvalidator
  • Novità di Asp.Net 4.0

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

    ×