• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Novità di Asp.Net 4.0
 

Novità di Asp.Net 4.0

on

  • 1,328 views

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

Statistics

Views

Total Views
1,328
Views on SlideShare
1,324
Embed Views
4

Actions

Likes
0
Downloads
8
Comments
0

1 Embed 4

http://www.linkedin.com 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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 Novità di Asp.Net 4.0 Presentation Transcript

  • Asp.NET 4.0
    Ricci Gian Maria
  • Agenda
    Novità di Asp.NET 4.0
    jQuery
    Microsoft Ajax
    MVC2
  • Autorun
    La prima richiestaeffettuata ad unaapplicazione è lentaperchèilsistemadeveinizializzarel’applicazionestessa
    IIS 7.5 permettedispecificarel’application pool edil site per effettuare un autostart
  • 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
  • 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
  • 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
  • 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
  • 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>
  • 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
  • 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...
  • 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
  • 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”
  • 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
  • Funzionalità Ajax
  • 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.
  • 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
  • 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
  • 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
  • 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
  • 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.
  • MVC2
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • Areas - Registrazione
    Classe <AreaName>AreaRegistration:
    • Nome dell’area
    • Routes
    http://msdn.microsoft.com/en-us/library/ee671793.aspx
  • Areas - Routes
    Registrare ogni route con il relativo namespace per evitare collisioni
    http://msdn.microsoft.com/en-us/library/ee671793.aspx
  • Areas - Routes
    Registrazione con namedargument (C# 4)
    Registrazione classica
    http://msdn.microsoft.com/en-us/library/ee671793.aspx
  • Areas - ActionLink
    • 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}
    http://msdn.microsoft.com/en-us/library/ee671793.aspx
  • 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
  • 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
  • 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
  • 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
  • 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
  • Validazione
    Grazie alle Data Annotation è possibile decidere il messaggio di errore
  • 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
  • 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.
  • 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
  • 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.