SlideShare ist ein Scribd-Unternehmen logo
1 von 36
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 objebugransformWebConfigransformedeb.config. Copying all files to temporary location below for package/publish: objebugackageackageTmp. 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: ,[object Object]
Routeshttp://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 ,[object Object]
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

Weitere ähnliche Inhalte

Was ist angesagt?

Creare API pubbliche, come evitare gli errori comuni
 Creare API pubbliche, come evitare gli errori comuni Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuniAndrea Dottor
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceAntonio Musarra
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomAntonio Musarra
 
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftAsp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftStefano Benedetti
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
 
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicinodavide ficano
 
Spring Framework
Spring FrameworkSpring Framework
Spring FrameworkNaLUG
 
Acadevmy - Angular Overview
Acadevmy - Angular OverviewAcadevmy - Angular Overview
Acadevmy - Angular OverviewFrancesco Sciuti
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringMarcello Teodori
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
Introduzione a Sass e Less (ITA)
Introduzione a Sass e Less (ITA)Introduzione a Sass e Less (ITA)
Introduzione a Sass e Less (ITA)Valerio Radice
 
Modulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E AopModulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E Aopjdksrl
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMCodemotion
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNetMauro Servienti
 
Costruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRMCostruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRMAntonio Musarra
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleAntonio Musarra
 

Was ist angesagt? (20)

Creare API pubbliche, come evitare gli errori comuni
 Creare API pubbliche, come evitare gli errori comuni Creare API pubbliche, come evitare gli errori comuni
Creare API pubbliche, come evitare gli errori comuni
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual Appliance
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
 
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo MicrosoftAsp.Net MVC 3 - Il Model View Controller secondo Microsoft
Asp.Net MVC 3 - Il Model View Controller secondo Microsoft
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
 
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.NetAlessandro Forte - Realizzare controlli Ajax in ASP.Net
Alessandro Forte - Realizzare controlli Ajax in ASP.Net
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicino
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Acadevmy - Angular Overview
Acadevmy - Angular OverviewAcadevmy - Angular Overview
Acadevmy - Angular Overview
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Introduzione a Sass e Less (ITA)
Introduzione a Sass e Less (ITA)Introduzione a Sass e Less (ITA)
Introduzione a Sass e Less (ITA)
 
Spring Intro
Spring IntroSpring Intro
Spring Intro
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 
Modulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E AopModulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E Aop
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet
 
Costruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRMCostruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRM
 
Java lezione 18
Java lezione 18Java lezione 18
Java lezione 18
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
 

Ähnlich wie Novità di Asp.Net 4.0

ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroAndrea Dottor
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiAndrea Dottor
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAndrea Balducci
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Massimo Bonanni
 
Seam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano CiccazzoSeam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano CiccazzoJava User Group Roma
 
April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5JBug Italy
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012Crismer La Pignola
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8Valerio Radice
 
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1dotnetcode
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)Luca Milan
 
September 2010 - Gatein
September 2010 - GateinSeptember 2010 - Gatein
September 2010 - GateinJBug Italy
 

Ähnlich wie Novità di Asp.Net 4.0 (20)

ASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuroASP.NET MVC 6 - uno sguardo al futuro
ASP.NET MVC 6 - uno sguardo al futuro
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community Tour
 
Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!Asp.net web form 4.5 - what's new!!
Asp.net web form 4.5 - what's new!!
 
Seam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano CiccazzoSeam unifies Java EE by Massimiliano Ciccazzo
Seam unifies Java EE by Massimiliano Ciccazzo
 
April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5April 2010 - Seam unifies JEE5
April 2010 - Seam unifies JEE5
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
Html5 e PHP
Html5 e PHPHtml5 e PHP
Html5 e PHP
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8
 
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
Meetup DotNetCode Settembre 2018 - ASP.NET Core 2.1
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Yagwto
YagwtoYagwto
Yagwto
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)What's new in Asp.Net 4.5 (and WebApi)
What's new in Asp.Net 4.5 (and WebApi)
 
September 2010 - Gatein
September 2010 - GateinSeptember 2010 - Gatein
September 2010 - Gatein
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Asp net (versione 1 e 2)
Asp net (versione 1 e 2)Asp net (versione 1 e 2)
Asp net (versione 1 e 2)
 

Mehr von Gian Maria Ricci

Se non sviluppo codice non sto lavorando
Se non sviluppo codice non sto lavorandoSe non sviluppo codice non sto lavorando
Se non sviluppo codice non sto lavorandoGian Maria Ricci
 
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure DevopsGestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure DevopsGian Maria Ricci
 
Migrare da un VCS centralizzato a Git
Migrare da un VCS centralizzato a GitMigrare da un VCS centralizzato a Git
Migrare da un VCS centralizzato a GitGian Maria Ricci
 
Real World Build + Release automation in Azure DevOps
Real World Build + Release automation in Azure DevOpsReal World Build + Release automation in Azure DevOps
Real World Build + Release automation in Azure DevOpsGian Maria Ricci
 
Gestire i rilasci automatici con azure devops
Gestire i rilasci automatici con azure devopsGestire i rilasci automatici con azure devops
Gestire i rilasci automatici con azure devopsGian Maria Ricci
 
Build and release in code with azure devops pipelines
Build and release in code with azure devops pipelinesBuild and release in code with azure devops pipelines
Build and release in code with azure devops pipelinesGian Maria Ricci
 
Azure Pipeline in salsa yaml
Azure Pipeline in salsa yamlAzure Pipeline in salsa yaml
Azure Pipeline in salsa yamlGian Maria Ricci
 
Git gitflow pull requests in devops focused teams
Git gitflow pull requests in devops focused teamsGit gitflow pull requests in devops focused teams
Git gitflow pull requests in devops focused teamsGian Maria Ricci
 
Distribute your code with NUget and build vNext
Distribute your code with NUget and build vNextDistribute your code with NUget and build vNext
Distribute your code with NUget and build vNextGian Maria Ricci
 
Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSCGian Maria Ricci
 
Introduction to Application insights
Introduction to Application insightsIntroduction to Application insights
Introduction to Application insightsGian Maria Ricci
 
Deploy applications with TFS Build
Deploy applications with TFS BuildDeploy applications with TFS Build
Deploy applications with TFS BuildGian Maria Ricci
 
TFS - Quale source control
TFS - Quale source controlTFS - Quale source control
TFS - Quale source controlGian Maria Ricci
 
Introduction to Visual Studio Online
Introduction to Visual Studio OnlineIntroduction to Visual Studio Online
Introduction to Visual Studio OnlineGian Maria Ricci
 
Come Organizzare il proprio Team Project
Come Organizzare il proprio Team ProjectCome Organizzare il proprio Team Project
Come Organizzare il proprio Team ProjectGian Maria Ricci
 

Mehr von Gian Maria Ricci (20)

Se non sviluppo codice non sto lavorando
Se non sviluppo codice non sto lavorandoSe non sviluppo codice non sto lavorando
Se non sviluppo codice non sto lavorando
 
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure DevopsGestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
Gestire la qualità del codice con Visual Studio, SonarQube ed Azure Devops
 
Migrare da un VCS centralizzato a Git
Migrare da un VCS centralizzato a GitMigrare da un VCS centralizzato a Git
Migrare da un VCS centralizzato a Git
 
Real World Build + Release automation in Azure DevOps
Real World Build + Release automation in Azure DevOpsReal World Build + Release automation in Azure DevOps
Real World Build + Release automation in Azure DevOps
 
Gestire i rilasci automatici con azure devops
Gestire i rilasci automatici con azure devopsGestire i rilasci automatici con azure devops
Gestire i rilasci automatici con azure devops
 
Build and release in code with azure devops pipelines
Build and release in code with azure devops pipelinesBuild and release in code with azure devops pipelines
Build and release in code with azure devops pipelines
 
Azure Pipeline in salsa yaml
Azure Pipeline in salsa yamlAzure Pipeline in salsa yaml
Azure Pipeline in salsa yaml
 
Git gitflow pull requests in devops focused teams
Git gitflow pull requests in devops focused teamsGit gitflow pull requests in devops focused teams
Git gitflow pull requests in devops focused teams
 
Distribute your code with NUget and build vNext
Distribute your code with NUget and build vNextDistribute your code with NUget and build vNext
Distribute your code with NUget and build vNext
 
Manage your environment with DSC
Manage your environment with DSCManage your environment with DSC
Manage your environment with DSC
 
Introduction to Application insights
Introduction to Application insightsIntroduction to Application insights
Introduction to Application insights
 
Git branching model
Git branching modelGit branching model
Git branching model
 
Deploy applications with TFS Build
Deploy applications with TFS BuildDeploy applications with TFS Build
Deploy applications with TFS Build
 
TFS - Quale source control
TFS - Quale source controlTFS - Quale source control
TFS - Quale source control
 
Branch model in Git
Branch model in GitBranch model in Git
Branch model in Git
 
Introduction to Visual Studio Online
Introduction to Visual Studio OnlineIntroduction to Visual Studio Online
Introduction to Visual Studio Online
 
Git si o Git No
Git si o Git NoGit si o Git No
Git si o Git No
 
Testing
TestingTesting
Testing
 
Come Organizzare il proprio Team Project
Come Organizzare il proprio Team ProjectCome Organizzare il proprio Team Project
Come Organizzare il proprio Team Project
 
Git Perchè Usarlo
Git Perchè UsarloGit Perchè Usarlo
Git Perchè Usarlo
 

Novità di Asp.Net 4.0

  • 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 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.
  • 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.
  • 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
  • 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
  • 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.

Hinweis der Redaktion

  1. Finita questa slide passare nel codice e fare vedere le trasformazioni possibili
  2. Fare la demo delle funzionalità di pubblicazione del sito.
  3. Fare vedere the textbox e requiredfieldvalidator
  4. Fare vedere the textbox e requiredfieldvalidator