Your SlideShare is downloading. ×

Novità di Asp.Net 4.0

1,057

Published on

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

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,057
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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
  • Transcript

    • 1. Asp.NET 4.0
      Ricci Gian Maria
    • 2. Agenda
      Novità di Asp.NET 4.0
      jQuery
      Microsoft Ajax
      MVC2
    • 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 objDebugTransformWebConfig ransformedWeb.config.
      Copying all files to temporary location below for package/publish:
      objDebugPackagePackageTmp.
      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
    • 14. Funzionalità Ajax
    • 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.
    • 21. MVC2
    • 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
    • 28. Areas - Registrazione
      Classe <AreaName>AreaRegistration:
      • Nome dell’area
      • 29. Routes
      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. Areas - ActionLink
      • Per “entrare” in un’area è necessario indicarne il nome
      • 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
    • 40. Validazione
      Grazie alle Data Annotation è possibile decidere il messaggio di errore
    • 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
    • 44. Domande
    • 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.
       
      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.

    ×