SlideShare ist ein Scribd-Unternehmen logo
1 von 84
Powerful ASP.NET 4.0
&
Internet Explorer 9
Benedetti Stefano
Contatti
Ing. Stefano Benedetti
http://www.be-st.it
http://blog.be-st.it
info@be-st.it
http://dotdotnet.org/
Lo User Group dell'Emilia-Romagna
interamente dedicato alle
tecnologie Microsoft .NET
ASP.Net 4
• What’s new?
– Niente (?)
• Powerful ASP.Net
– Performance
– Productivity
– SEO
– Cura per la “Lazy Dev Syndrome” 
Session roadmap
• Core services
• AJAX
• Web forms
• Visual Studio 2010 Web Development
Improvements
• Web Application Deployment
• Internet Explorer 9
Core services
– Web.config File Refactoring
– Extensible Output Caching
– Auto-Start Web Applications
– Permanently Redirecting a Page
– Shrinking Session State
– Expanding the Range of Allowable URLs
– Extensible Request Validation
– Object Caching and Object Caching Extensibility
– Extensible HTML, URL, and HTTP Header Encoding
– Performance Monitoring for Individual Applications in a
Single Worker Process
– Multi-Targeting
Web.config File Refactoring
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation targetFramework="4.0" />
</system.web>
</configuration>
Auto-Start Web Applications
• Impostare l’application pool da caricare nel
file applicationHost.config
(C:WindowsSystem32inetsrvconfig)
<applicationpools>
<add name="MyApplicationPool"
startMode="AlwaysRunning" />
</applicationpools>
Auto-Start Web Applications
• Alternativa:
IIS Application Warm-Up Module for IIS
7.5 (beta)
Permanently Redirecting a Page
3.5
• Response.Redirect
("/newpath/content.aspx)
4.0
• RedirectPermanent
("/newpath/content.aspx");
HTTP 302 Found
(temporary redirect)
HTTP 301
Found Moved Permanently
Shrinking Session State
• Session e Web farm: 2 opzioni di storage
– Session-state server
– SQL Server
• In entrambi i casi la sessione viene
serializzata
• Le sessioni occupano spazio. Quindi?
• Non utilizzare le sessioni nelle applicazioni
web!!
– Il Web è stateless
• Se proprio dovete…
Shrinking Session State
• Nuovo attributo: compressionEnabled
• <sessionState mode="SqlServer"
sqlConnectionString="data
source=dbserver;Initial Catalog=aspnetstate"
allowCustomSqlDatabase="true"
compressionEnabled="true" />
• Completamente trasparente
• Utilizza
System.IO.Compression.GZipStream
Session roadmap
• Core services
• AJAX
• Web forms
• Visual Studio 2010 Web Development
Improvements
• Web Application Deployment
AJAX
• jQuery out of the box
• Content Delivery Network Support
• ScriptManager Explicit Scripts
jQuery out of the box
• I template per le web forms e per MVC
comprendono già la libreria open-source
jQuery
• Script folder
– jQuery-1.4.1.js (165kb)
– jQuery-1.4.1.min.js (71kb)
– jQuery-1.4.1-vsdoc.js
• Usare la versione js in ambiente di dev
• Usare min.js in produzione!!!
AJAX :: CDN Support
• Performance
• Il contenuto delle CDN è in cache in varie
parti del mondo
• L’utilizzo degli scripts sulla CDN consente
ai browser di riutilizzare i JavaScript anche
su diversi web sites
• Risparmio di banda sui nostri server!!!
Paga MS 
• Supporta SSL
AJAX :: CDN Support
• Librerie incluse:
• jQuery
• jQuery Validation
• Ajax Control Toolkit
• ASP.NET Ajax
• ASP.NET MVC JavaScript Files
AJAX :: ScriptManager
• Lo ScriptManager supporta la CDN
semplicemente impostando la proprietà
EnableCdn
• <asp:ScriptManager ID="sm1"
EnableCdn="true" runat="server" />
• Tutti i JS del framework ASP.NET
(compresi validation e UpdatePanel)
• Performance!!
ScriptManager Explicit Scripts
• Ieri veniva caricata tutta la libreria
• Oggi: AjaxFrameworkMode property
– Enabled: tutta la library (legacy behavior)
– Disabled: Ajax disabilitato/nessuno script
– Explict: selezione esplicita delle librerie core
• NB: compilation debug=“true” carica le
library di debug!!!
Session roadmap
• Core services
• AJAX
• Web forms
• Visual Studio 2010 Web Development
Improvements
• Web Application Deployment
Web Forms
• Setting Meta Tags with the Page.MetaKeywords and Page.MetaDescription Properties
• Enabling View State for Individual Controls
• Changes to Browser Capabilities
• Routing in ASP.NET 4
• Setting Client IDs
• Persisting Row Selection in Data Controls
• ASP.NET Chart Control
• Filtering Data with the QueryExtender Control
• Html Encoded Code Expressions
• Project Template Changes
• CSS Improvements
• Hiding div Elements Around Hidden Fields
• Rendering an Outer Table for Templated Controls
• ListView Control Enhancements
• CheckBoxList and RadioButtonList Control Enhancements
• Menu Control Improvements
• Wizard and CreateUserWizard
Nuove Meta Tags properties
• Nuove property nella classe Page
– Page.MetaKeywords
– Page.MetaDescription
• Operano sui tag:
– <meta name="keywords" content="These,
are, my, keywords" />
– <meta name="description" content="This is
the description of my page" />
Nuove Meta Tags property
• Funzionano come Page.Title
– Non esistono i meta tag nella sezione head => Add
– Esistono già i meta tag nella sezione head => Get/Set
• Impostabili in maniera dichiarativa nella direttiva
Page (override degli eventuali tag meta)
<%@ Page Language="C#"
AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default"
Keywords="These, are, my, keywords"
Description="This is a description" %>
ViewState 3.5
• Il viewstate a default è abilitato per tutta la
pagina
• Aumenta le dimensioni della pagina e i tempi
di caricamento
• E’ possibile disabilitarlo per l’intera pagina (ma
così ogni controllo non ha il viewstate)
• Oppure abilitarlo ma è necessario disabilitare
ogni singolo controllo
ViewState 4.0
• Nuova property ViewStateMode nei WebControls
• Enumerato: Enabled, Disabled, e Inherit
• Si può settare in maniera dichiarativa nella direttiva
@Page (anche Page è un WebControl)
• Valido solo se EnableViewState=true, altrimenti
viene ignorato
• Tip: settare ViewStateMode = Disabled nella
master page e abilitarlo solo per i controlli che ne
hanno bisogno (o per i ContentPlaceHolder che lo
utilizzano)
• Ancora più drastico: disabilitarlo da web.config
Routing
• Fondamentale nel SEO, in MVC e REST
• http://website/products.aspx?categoryid=12
• http://website/products/software
• Presente da ASP.NET 3.5 SP1
• Built-in nella versione 4.0
Routing: nuove feature
• PageRouteHandler
• HttpRequest.RequestContext e
Page.RouteData
• Nuovi expression builder
– RouteUrl
– RouteValue
– RouteParameter
Accesso ai parametri da codice
• HttpRequest.RequestContext e
Page.RouteData
(Page.RouteData è un wrapper di
HttpRequest.RequestContext.RouteData)
• Demo: Search
Accesso ai parametri da markup
• RouteUrl expression
<asp:HyperLink ID="HyperLink1“
NavigateUrl="<%$RouteUrl:SearchTerm=s
cott%>“>Search for Scott
</asp:HyperLink>
• Genera il markup:
http://<website>/search/scott
• Demo: RouteUrl
Accesso ai parametri da markup
• Per leggere i parametri si usa la property
RouteValue
• <asp:Label ID="Label1" runat="server"
Text="<%$RouteValue:SearchTerm%>" />
• Demo: Search
RouteData come parametri
• I Route Data possono essere utilizzati come
markup direttamente nei controlli DataSource
• <asp:sqldatasource id="SqlDataSource1"
selectcommand="SELECT
CompanyName,ShipperID FROM Shippers where
CompanyName=@companyname“>
<selectparameters>
<asp:routeparameter
name="companyname"
RouteKey="searchterm" />
</selectparameters>
</asp:sqldatasource>
ClientID 3.5
• L’attributo id di ogni WebControl è generato a
runtime
• Ne viene garantita l’univocità ma non è predittivo
• Fondamentale per l’accesso client ai controlli
• WebControl
– Id= [NamingContainer_]id
• Controlli “repeater”
– Id = <prefix>_NamingContainer_id_<SequentialNumber>
• Accesso tramite la property ClientID
ClientID 4.0
• ClientIDMode
– AutoID
– Static
– Predictable
– Inherit
• Page level (default AutoID)
• Control level (default Inherit)
• Quindi a default tutti i controlli hanno il
comportamento legacy
ClientIDMode AutoID
• Comportamento legacy
• WebControl
– Id= [NamingContainer_]id
• Controlli “repeater”
– Id =
<prefix>_NamingContainer_id_<SequentialNumber>
ClientIDMode Static
• Il ClientID è lo stesso dell’ID lato server
• Non viene concatenato nessun parent
naming container
• Utile per i Web user control che possono
essere posizionati in diverse pagine e
differenti controlli quindi l’AutoID è
completamente non predicibile
ClientIDMode Predictable
• L’uso principale è nei controlli “repeater”
• Concatena l’ID con il naming container ma
senza “ctlxxx”
• Si combina con la property ClientIDRowSuffix
– Si imposta col nome di un data field
– Tipicamente la chiave primaria
– Il valore viene usato come suffisso
– Il repeater non la utilizza ma imposta il RowIndex
come suffix
DataBound controls
• Gridview (1 o più campi concatenati)
ClientIDRowSuffix = "ProductName,
ProductId“
id = rootPanel_GridView1_ProductNameLabel
• ListView (1 solo campo concatenato)
ClientIDRowSuffix = "ProductId“
id = rootPanel_GridView1_ProductNameLabel
• Repeater (non applicabile, appende il
RowIndex): Repeater1_ProductNameLabel
• FormView e DetailsView non sono multiriga
ClientID: univocità!
• NB: è compito dello sviluppatore garantire
che l’id generato sia univoco
• Senza univocità molto probabilmente ci
saranno problemi con tutte le funzionalità
che la richiedono come ad esempio la
funzione client document.getElementById
Persisting row selection
3.5
• nei controlli databound la
selezione viene fatta in base al
numero di riga e salvata
attraverso le pagine
• Ad esempio selezionando la
riga 2 nella prima pagina e
cambiando pagina viene
sempre selezionata la riga 2
4.0
• nuova property
EnablePersistedSelection
• La riga viene selezionata in
base alla Data Key
• Obbligatoria la property
DataKeyNames
Chart Control
• 35 tipi di grafici
• Grafici 3D
• Più di 50 formule finanziarie e statistiche
• Data binding
• Supporto per formati quali data, ora e
currency
• Interattività, gestione eventi e supporto Ajax
Chart Control
• Introdotti come add-on per il framework 3.5
sp1
• Integrati nel framework 4.0
• Esempi:
– Samples Environment for Microsoft Chart
Controls
(http://go.microsoft.com/fwlink/?LinkId=128300
)
Html Encoded Code Expressions
3.5
• <%= expression %>
• Se non si fa esplicitamente
l’encoding si rischiano gli
attacchi XSS:
• <%=
HttpUtility.HtmlEncode(expre
ssion) %>
4.0
• Nuova sintassi
<%: expression %>
CSS e rendering improvements
• Nuovo motore di rendering dei Web Control
• Obiettivo: standard HTML
• Controllato da
controlRenderingCompatibilityVersion
<system.web><pages
controlRenderingCompatibilityVersion="3.5|4.0
"/>
</system.web>
• Default 4.0 nel machine.config per i progetti su
framework 4.0
controlRendering
CompatibilityVersion
• 3.5: comportamento legacy, 100% backward
compatible e utilizza xhtmlConformance
– CSS Friendly Adapters http://www.asp.net/cssadapters/
• 4.0
– xhtmlConformance=Strict a default (XHTML 1.0 strict)
– Disable sui controlli non input non genera stili invalidi
– Stili per i div attorno agli elementi hidden
– Menù renderizzati tramite ul/li
– I validation control non generano inline styles
– Image e Table non generano più l’attributo border=0
Disable sui controlli non input
• <asp:Label id="Label" runat="server"
Text="Test" Enabled="false">
• 3.5
<span id="Label1"
>Test</span>
• 4.0
<span id="Span1"
>Test</span>
Elementi hidden e div
• 3.5
– Gli elementi hidden (ad es. ViewState)
contenuti in un DIV (standard XHTML)
– Problemi se i CSS utilizzano i DIV
• 4.0
– Aggiunge una class CSS
<div class="aspNetHidden">...</div>
Controlli template e tabelle
• 3.5: Viene generata una tabella esterna
– FormView
– Login
– PasswordRecovery
– ChangePassword
– Wizard
– CreateUserWizard
Controlli template e tabelle
• 4.0: Nuova property RenderOuterTable
– Non viene più generata la tabella esterna (table, tr
e td tag rimossi)
Menù
• 3.5 gestito tramite una serie di tabelle
• 4.0 renderizzato tramite ul/li
• Demo: Menu40
Image e Validator
• 3.5
– il controllo Image genera un inline style con border
“0”
– Anche i controlli validator generano degli inline
styles
• 4.0 rimossi gli inline styles
• Demo: Others
CheckList e RadioButtonList
• 3.5
– RepeatLayout: Flow (span) e Table (table)
• 4.0
– Nuove opzioni:
• OrdererdList => li
• UnorderedList => ul
• Demo: Others
Visual Studio 2010 Web
Development Improvements
• Migliorata la compatibilità dei CSS con gli
standard 2.1
• HTML e JavaScript Snippets
• JavaScript IntelliSense Enhancements
HTML e JavaScript Snippets
• Auto-complete dei tag nell’editor HTML
• Snippet per JavaScript
• Snippet per i controlli ASP.NET
• Gli snippet forniscono gli attributi
obbligatori (ID, DataSourceID,
ControlToValidate, Text…)
• Download di nuovi snippets
• Creazione di nuovi snippets
JavaScript IntelliSense
• Riconosce oggetti generati dinamicamente (ad
esempio registerNamespace)
• Miglioramenti alla performance nell’analisi di
grosse librerie
• Maggiore compatibilità con third-party libraries
• I commenti al codice sono dinamicamente
aggiunti all’IntelliSense
Web Application Deployment with
Visual Studio 2010
• Web Packaging
• Web.config Transformation
• Database Deployment
• One-Click Publish per le Web Applications
Web config transformation
• Web.config trasformabile tramite XML
Document Transform
• Versioni diverse per dev, production
• Production = compilation debug=false!!
Internet Explorer 9
• HTML 5 (draft!)
• Performance
• CSS3 (draft!)
• Supporto SVG
• Pinned sites
HTML 5
• DRAFT!
• Canvas
• Nuovi tag
– Audio
– Video
– Semantic tags
• Client side storage
• Scalable Vector Graphics
HTML 5 intellisense
• https://blogs.msdn.com/b/pietrobr/archive/2010/06/11/visual-studio-2010-e-html-5-
intellisense.aspx
Canvas
• Area per disegnare “al volo”
• L’output generato è una bitmap
• Non è modificabile ma deve essere
ridisegnato completamente
• I comandi grafici sono inviati direttamente
alla GPU
Canvas
<canvas id="myCanvas" width="200" height="200">
Your browser doesn’t support Canvas, sorry.
</canvas>
<script type="text/javascript">
var example = document.getElementById("myCanvas");
var context = example.getContext("2d");
context.fillStyle = "rgb(255,0,0)";
context.fillRect(30, 30, 50, 50);
</script>
<video>
• È un tag html
– Formato MPEG-4/H.264 video
– Accelerazione hardware basata sulla GPU
• Attributi
• src
• autoplay
• controls
• preload
• loop
• height & width
<audio>
• Come il video anche l’audio è un semplice
tag HTML
– Formato: MP3 and AAC audio
• Attributi
– src
– autoplay
– controls
– preload
Client side storage
• String based key-value pair
– Session storage
– Local storage
• Maggiore spazio dei cookie
• Non invia dati al server ad ogni richiesta
come i cookie
Session storage
• sessionStorage.setItem('fullname', ‘Rossi
Mario');
• alert(“Ti chiami: " +
sessionStorage.getItem('fullname'));
• alert(“Ciao " + sessionStorage.fullname);
• sessionStorage.removeItem('fullname');
Local storage
• localStorage.setItem('fullname', ‘Rossi
Mario');
• alert(“Ti chiami: " +
localStorage.getItem('fullname'));
• alert(“Ciao " + localStorage.fullname);
• localStorage.removeItem('fullname');
Supporto SVG
• Disegno vettoriale 2D tramite XML
• Shapes
– rect
– circle
– ellipse
– line
– polyline
– polygon
Supporto SVG
Semantic tags
• Un semantic tag è un tag il cui nome descrive il
contenuto senza aver un particolare comportamento
• Nuovi tag
– section
– nav
– article
– aside
– hgroup
– header
– footer
– figure
– figcaption
– mark
Layout classico
Header
Footer
Sidebar
Menu
Contenuti Un struttura tipica contiene:
<div id=“header”>….
<div id=“menu”>…
<div id=“sidebar”>…
<div id=“content”>…
<div id=“footer”>…
Semantic tags
• <header>
• <nav> (menu di navigazione)
• <aside> (sidebar)
• <section> … <article> …
• <footer>
• E nuovi relation (rel) (archives, pingback, icon, etc);
Developer tools (aka F12)
• Interfaccia visuale integrata per l’accesso
a
– HTML, CSS, DOM
– Javascript Debugging
– Javascript Profiling
– Compatibilità dei siti con IE9
– Network Tab
• Traccia tutte le richieste uscenti dalla
pagina e le relative risposte
• Informazioni sintetiche
• Informazioni di dettaglio
Network Tab
Javascript Profiling
Network Tab Summary View
Network Tab Detail View
Performance
• Accelerazione tramite GPU
• Nuovo engine Javascript “Chakra”
– Multi core background compilation
Nuovo engine Javascript
Accelerazione tramite GPU
• <canvas>
• <video>
• <audio>
• CSS3
• SVG 1.1
• Web fonts
Pinning
Pinning: Thumbnails Buttons
Riferimenti ASP.Net
• ASP.NET 4.0
http://www.asp.net/learn/whitepapers/aspnet4
http://weblogs.asp.net/Scottgu/
• Internet Information Service
http://www.iis.net/download/applicationwarmup
http://learn.iis.net/page.aspx/124/introduction-to-
applicationhostconfig/
• CDN
http://www.asp.net/ajaxlibrary/CDN.ashx
Riferimenti ASP.Net
• Chart controls
Microsoft Chart Controls Samples
http://go.microsoft.com/fwlink/?LinkId=1283
00
• XSS: http://msdn.microsoft.com/en-
us/library/ff649310.aspx
Riferimenti IE9
Internet Explorer Developer Center on MSDN
http://msdn.com/ie
Windows User Experience Interaction Guidelines
http://msdn.microsoft.com/en-us/library/aa511446.aspx
Channel 9 Taskbar related videos
http://channel9.msdn.com/tags/Taskbar/
http://channel9.msdn.com/Search/?Term=taskbar
Icon Guidelines
http://msdn.microsoft.com/en-us/library/aa511280.aspx
That’s all folks
Domande?

Weitere ähnliche Inhalte

Was ist angesagt?

AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
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
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAXTommaso Torti
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Andrea Dottor
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS DevicesAndrea Picchi
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloudRiccardo Zamana
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleMarco Breveglieri
 
AngularJS: server communication
AngularJS: server communicationAngularJS: server communication
AngularJS: server communicationVittorio Conte
 
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
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...azuredayit
 
Integrare Zend Framework in Wordpress
Integrare Zend Framework in WordpressIntegrare Zend Framework in Wordpress
Integrare Zend Framework in WordpressEnrico Zimuel
 
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Codemotion
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload ProfilingGianluca Hotz
 

Was ist angesagt? (19)

Asp.Net MVC 5
Asp.Net MVC 5Asp.Net MVC 5
Asp.Net MVC 5
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
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!!
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Antica presentazione AJAX
Antica presentazione AJAXAntica presentazione AJAX
Antica presentazione AJAX
 
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
Back to the Future: Migrare da WebForm ad ASP.NET Core gradualmente
 
Novità di Asp.Net 4.0
Novità di Asp.Net 4.0Novità di Asp.Net 4.0
Novità di Asp.Net 4.0
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarle
 
AngularJS: server communication
AngularJS: server communicationAngularJS: server communication
AngularJS: server communication
 
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
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
Angular js: routing
Angular js: routingAngular js: routing
Angular js: routing
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
 
Integrare Zend Framework in Wordpress
Integrare Zend Framework in WordpressIntegrare Zend Framework in Wordpress
Integrare Zend Framework in Wordpress
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
Java EE facile con Spring Boot - Luigi Bennardis - Codemotion Roma 2015
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload Profiling
 

Andere mochten auch

Anàlisi musical i
Anàlisi musical iAnàlisi musical i
Anàlisi musical ijgarola1
 
Presentación celebración amor y amistad en el santa maría 2011 blog
Presentación celebración amor y amistad en el santa maría 2011 blogPresentación celebración amor y amistad en el santa maría 2011 blog
Presentación celebración amor y amistad en el santa maría 2011 bloggarfredy
 
Crowdsourcing -das_outsourcing_der_zukunft!
Crowdsourcing  -das_outsourcing_der_zukunft!Crowdsourcing  -das_outsourcing_der_zukunft!
Crowdsourcing -das_outsourcing_der_zukunft!koglerma
 

Andere mochten auch (8)

Urrutia
UrrutiaUrrutia
Urrutia
 
Anàlisi musical i
Anàlisi musical iAnàlisi musical i
Anàlisi musical i
 
áLbum de fotografías
áLbum de fotografíasáLbum de fotografías
áLbum de fotografías
 
Presentación celebración amor y amistad en el santa maría 2011 blog
Presentación celebración amor y amistad en el santa maría 2011 blogPresentación celebración amor y amistad en el santa maría 2011 blog
Presentación celebración amor y amistad en el santa maría 2011 blog
 
Escocês voador
Escocês voadorEscocês voador
Escocês voador
 
Crowdsourcing -das_outsourcing_der_zukunft!
Crowdsourcing  -das_outsourcing_der_zukunft!Crowdsourcing  -das_outsourcing_der_zukunft!
Crowdsourcing -das_outsourcing_der_zukunft!
 
Powerpoint de los sofware
Powerpoint de los sofwarePowerpoint de los sofware
Powerpoint de los sofware
 
Sopa de páginas
Sopa de páginasSopa de páginas
Sopa de páginas
 

Ähnlich wie Powerful asp.net 4 e ie9

ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)Giorgio Di Nardo
 
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
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
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: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%DomusDotNet
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web AppsAndrea Dottor
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Codemotion
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiAndrea 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
 
Azure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBAzure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBDavide Benvegnù
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Railsjekil
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
 
SQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisSQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisGianluca Sartori
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP WayLuca Milan
 
Applicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e KatanaApplicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e KatanaNicolò Carandini
 
Self hosted Services with .NET OWin
Self hosted Services with .NET OWinSelf hosted Services with .NET OWin
Self hosted Services with .NET OWinNicolò Carandini
 

Ähnlich wie Powerful asp.net 4 e ie9 (20)

ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)
 
Le novita di visual studio 2012
Le novita di visual studio 2012Le novita di visual studio 2012
Le novita di visual studio 2012
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
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: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
Esempi pratici
Esempi praticiEsempi pratici
Esempi pratici
 
Blazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi realiBlazor ha vinto? Storie di casi reali
Blazor ha vinto? Storie di casi reali
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
Azure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBAzure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDB
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
 
SQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisSQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload Analysis
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Applicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e KatanaApplicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e Katana
 
Self hosted Services with .NET OWin
Self hosted Services with .NET OWinSelf hosted Services with .NET OWin
Self hosted Services with .NET OWin
 

Kürzlich hochgeladen

Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 

Kürzlich hochgeladen (9)

Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 

Powerful asp.net 4 e ie9

  • 1. Powerful ASP.NET 4.0 & Internet Explorer 9 Benedetti Stefano
  • 2. Contatti Ing. Stefano Benedetti http://www.be-st.it http://blog.be-st.it info@be-st.it http://dotdotnet.org/ Lo User Group dell'Emilia-Romagna interamente dedicato alle tecnologie Microsoft .NET
  • 3. ASP.Net 4 • What’s new? – Niente (?) • Powerful ASP.Net – Performance – Productivity – SEO – Cura per la “Lazy Dev Syndrome” 
  • 4. Session roadmap • Core services • AJAX • Web forms • Visual Studio 2010 Web Development Improvements • Web Application Deployment • Internet Explorer 9
  • 5. Core services – Web.config File Refactoring – Extensible Output Caching – Auto-Start Web Applications – Permanently Redirecting a Page – Shrinking Session State – Expanding the Range of Allowable URLs – Extensible Request Validation – Object Caching and Object Caching Extensibility – Extensible HTML, URL, and HTTP Header Encoding – Performance Monitoring for Individual Applications in a Single Worker Process – Multi-Targeting
  • 6. Web.config File Refactoring <?xml version="1.0"?> <configuration> <system.web> <compilation targetFramework="4.0" /> </system.web> </configuration>
  • 7. Auto-Start Web Applications • Impostare l’application pool da caricare nel file applicationHost.config (C:WindowsSystem32inetsrvconfig) <applicationpools> <add name="MyApplicationPool" startMode="AlwaysRunning" /> </applicationpools>
  • 8. Auto-Start Web Applications • Alternativa: IIS Application Warm-Up Module for IIS 7.5 (beta)
  • 9. Permanently Redirecting a Page 3.5 • Response.Redirect ("/newpath/content.aspx) 4.0 • RedirectPermanent ("/newpath/content.aspx"); HTTP 302 Found (temporary redirect) HTTP 301 Found Moved Permanently
  • 10. Shrinking Session State • Session e Web farm: 2 opzioni di storage – Session-state server – SQL Server • In entrambi i casi la sessione viene serializzata • Le sessioni occupano spazio. Quindi? • Non utilizzare le sessioni nelle applicazioni web!! – Il Web è stateless • Se proprio dovete…
  • 11. Shrinking Session State • Nuovo attributo: compressionEnabled • <sessionState mode="SqlServer" sqlConnectionString="data source=dbserver;Initial Catalog=aspnetstate" allowCustomSqlDatabase="true" compressionEnabled="true" /> • Completamente trasparente • Utilizza System.IO.Compression.GZipStream
  • 12. Session roadmap • Core services • AJAX • Web forms • Visual Studio 2010 Web Development Improvements • Web Application Deployment
  • 13. AJAX • jQuery out of the box • Content Delivery Network Support • ScriptManager Explicit Scripts
  • 14. jQuery out of the box • I template per le web forms e per MVC comprendono già la libreria open-source jQuery • Script folder – jQuery-1.4.1.js (165kb) – jQuery-1.4.1.min.js (71kb) – jQuery-1.4.1-vsdoc.js • Usare la versione js in ambiente di dev • Usare min.js in produzione!!!
  • 15. AJAX :: CDN Support • Performance • Il contenuto delle CDN è in cache in varie parti del mondo • L’utilizzo degli scripts sulla CDN consente ai browser di riutilizzare i JavaScript anche su diversi web sites • Risparmio di banda sui nostri server!!! Paga MS  • Supporta SSL
  • 16. AJAX :: CDN Support • Librerie incluse: • jQuery • jQuery Validation • Ajax Control Toolkit • ASP.NET Ajax • ASP.NET MVC JavaScript Files
  • 17. AJAX :: ScriptManager • Lo ScriptManager supporta la CDN semplicemente impostando la proprietà EnableCdn • <asp:ScriptManager ID="sm1" EnableCdn="true" runat="server" /> • Tutti i JS del framework ASP.NET (compresi validation e UpdatePanel) • Performance!!
  • 18. ScriptManager Explicit Scripts • Ieri veniva caricata tutta la libreria • Oggi: AjaxFrameworkMode property – Enabled: tutta la library (legacy behavior) – Disabled: Ajax disabilitato/nessuno script – Explict: selezione esplicita delle librerie core • NB: compilation debug=“true” carica le library di debug!!!
  • 19. Session roadmap • Core services • AJAX • Web forms • Visual Studio 2010 Web Development Improvements • Web Application Deployment
  • 20. Web Forms • Setting Meta Tags with the Page.MetaKeywords and Page.MetaDescription Properties • Enabling View State for Individual Controls • Changes to Browser Capabilities • Routing in ASP.NET 4 • Setting Client IDs • Persisting Row Selection in Data Controls • ASP.NET Chart Control • Filtering Data with the QueryExtender Control • Html Encoded Code Expressions • Project Template Changes • CSS Improvements • Hiding div Elements Around Hidden Fields • Rendering an Outer Table for Templated Controls • ListView Control Enhancements • CheckBoxList and RadioButtonList Control Enhancements • Menu Control Improvements • Wizard and CreateUserWizard
  • 21. Nuove Meta Tags properties • Nuove property nella classe Page – Page.MetaKeywords – Page.MetaDescription • Operano sui tag: – <meta name="keywords" content="These, are, my, keywords" /> – <meta name="description" content="This is the description of my page" />
  • 22. Nuove Meta Tags property • Funzionano come Page.Title – Non esistono i meta tag nella sezione head => Add – Esistono già i meta tag nella sezione head => Get/Set • Impostabili in maniera dichiarativa nella direttiva Page (override degli eventuali tag meta) <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Keywords="These, are, my, keywords" Description="This is a description" %>
  • 23. ViewState 3.5 • Il viewstate a default è abilitato per tutta la pagina • Aumenta le dimensioni della pagina e i tempi di caricamento • E’ possibile disabilitarlo per l’intera pagina (ma così ogni controllo non ha il viewstate) • Oppure abilitarlo ma è necessario disabilitare ogni singolo controllo
  • 24. ViewState 4.0 • Nuova property ViewStateMode nei WebControls • Enumerato: Enabled, Disabled, e Inherit • Si può settare in maniera dichiarativa nella direttiva @Page (anche Page è un WebControl) • Valido solo se EnableViewState=true, altrimenti viene ignorato • Tip: settare ViewStateMode = Disabled nella master page e abilitarlo solo per i controlli che ne hanno bisogno (o per i ContentPlaceHolder che lo utilizzano) • Ancora più drastico: disabilitarlo da web.config
  • 25. Routing • Fondamentale nel SEO, in MVC e REST • http://website/products.aspx?categoryid=12 • http://website/products/software • Presente da ASP.NET 3.5 SP1 • Built-in nella versione 4.0
  • 26. Routing: nuove feature • PageRouteHandler • HttpRequest.RequestContext e Page.RouteData • Nuovi expression builder – RouteUrl – RouteValue – RouteParameter
  • 27. Accesso ai parametri da codice • HttpRequest.RequestContext e Page.RouteData (Page.RouteData è un wrapper di HttpRequest.RequestContext.RouteData) • Demo: Search
  • 28. Accesso ai parametri da markup • RouteUrl expression <asp:HyperLink ID="HyperLink1“ NavigateUrl="<%$RouteUrl:SearchTerm=s cott%>“>Search for Scott </asp:HyperLink> • Genera il markup: http://<website>/search/scott • Demo: RouteUrl
  • 29. Accesso ai parametri da markup • Per leggere i parametri si usa la property RouteValue • <asp:Label ID="Label1" runat="server" Text="<%$RouteValue:SearchTerm%>" /> • Demo: Search
  • 30. RouteData come parametri • I Route Data possono essere utilizzati come markup direttamente nei controlli DataSource • <asp:sqldatasource id="SqlDataSource1" selectcommand="SELECT CompanyName,ShipperID FROM Shippers where CompanyName=@companyname“> <selectparameters> <asp:routeparameter name="companyname" RouteKey="searchterm" /> </selectparameters> </asp:sqldatasource>
  • 31. ClientID 3.5 • L’attributo id di ogni WebControl è generato a runtime • Ne viene garantita l’univocità ma non è predittivo • Fondamentale per l’accesso client ai controlli • WebControl – Id= [NamingContainer_]id • Controlli “repeater” – Id = <prefix>_NamingContainer_id_<SequentialNumber> • Accesso tramite la property ClientID
  • 32. ClientID 4.0 • ClientIDMode – AutoID – Static – Predictable – Inherit • Page level (default AutoID) • Control level (default Inherit) • Quindi a default tutti i controlli hanno il comportamento legacy
  • 33. ClientIDMode AutoID • Comportamento legacy • WebControl – Id= [NamingContainer_]id • Controlli “repeater” – Id = <prefix>_NamingContainer_id_<SequentialNumber>
  • 34. ClientIDMode Static • Il ClientID è lo stesso dell’ID lato server • Non viene concatenato nessun parent naming container • Utile per i Web user control che possono essere posizionati in diverse pagine e differenti controlli quindi l’AutoID è completamente non predicibile
  • 35. ClientIDMode Predictable • L’uso principale è nei controlli “repeater” • Concatena l’ID con il naming container ma senza “ctlxxx” • Si combina con la property ClientIDRowSuffix – Si imposta col nome di un data field – Tipicamente la chiave primaria – Il valore viene usato come suffisso – Il repeater non la utilizza ma imposta il RowIndex come suffix
  • 36. DataBound controls • Gridview (1 o più campi concatenati) ClientIDRowSuffix = "ProductName, ProductId“ id = rootPanel_GridView1_ProductNameLabel • ListView (1 solo campo concatenato) ClientIDRowSuffix = "ProductId“ id = rootPanel_GridView1_ProductNameLabel • Repeater (non applicabile, appende il RowIndex): Repeater1_ProductNameLabel • FormView e DetailsView non sono multiriga
  • 37. ClientID: univocità! • NB: è compito dello sviluppatore garantire che l’id generato sia univoco • Senza univocità molto probabilmente ci saranno problemi con tutte le funzionalità che la richiedono come ad esempio la funzione client document.getElementById
  • 38. Persisting row selection 3.5 • nei controlli databound la selezione viene fatta in base al numero di riga e salvata attraverso le pagine • Ad esempio selezionando la riga 2 nella prima pagina e cambiando pagina viene sempre selezionata la riga 2 4.0 • nuova property EnablePersistedSelection • La riga viene selezionata in base alla Data Key • Obbligatoria la property DataKeyNames
  • 39. Chart Control • 35 tipi di grafici • Grafici 3D • Più di 50 formule finanziarie e statistiche • Data binding • Supporto per formati quali data, ora e currency • Interattività, gestione eventi e supporto Ajax
  • 40. Chart Control • Introdotti come add-on per il framework 3.5 sp1 • Integrati nel framework 4.0 • Esempi: – Samples Environment for Microsoft Chart Controls (http://go.microsoft.com/fwlink/?LinkId=128300 )
  • 41. Html Encoded Code Expressions 3.5 • <%= expression %> • Se non si fa esplicitamente l’encoding si rischiano gli attacchi XSS: • <%= HttpUtility.HtmlEncode(expre ssion) %> 4.0 • Nuova sintassi <%: expression %>
  • 42. CSS e rendering improvements • Nuovo motore di rendering dei Web Control • Obiettivo: standard HTML • Controllato da controlRenderingCompatibilityVersion <system.web><pages controlRenderingCompatibilityVersion="3.5|4.0 "/> </system.web> • Default 4.0 nel machine.config per i progetti su framework 4.0
  • 43. controlRendering CompatibilityVersion • 3.5: comportamento legacy, 100% backward compatible e utilizza xhtmlConformance – CSS Friendly Adapters http://www.asp.net/cssadapters/ • 4.0 – xhtmlConformance=Strict a default (XHTML 1.0 strict) – Disable sui controlli non input non genera stili invalidi – Stili per i div attorno agli elementi hidden – Menù renderizzati tramite ul/li – I validation control non generano inline styles – Image e Table non generano più l’attributo border=0
  • 44. Disable sui controlli non input • <asp:Label id="Label" runat="server" Text="Test" Enabled="false"> • 3.5 <span id="Label1" >Test</span> • 4.0 <span id="Span1" >Test</span>
  • 45. Elementi hidden e div • 3.5 – Gli elementi hidden (ad es. ViewState) contenuti in un DIV (standard XHTML) – Problemi se i CSS utilizzano i DIV • 4.0 – Aggiunge una class CSS <div class="aspNetHidden">...</div>
  • 46. Controlli template e tabelle • 3.5: Viene generata una tabella esterna – FormView – Login – PasswordRecovery – ChangePassword – Wizard – CreateUserWizard
  • 47. Controlli template e tabelle • 4.0: Nuova property RenderOuterTable – Non viene più generata la tabella esterna (table, tr e td tag rimossi)
  • 48. Menù • 3.5 gestito tramite una serie di tabelle • 4.0 renderizzato tramite ul/li • Demo: Menu40
  • 49. Image e Validator • 3.5 – il controllo Image genera un inline style con border “0” – Anche i controlli validator generano degli inline styles • 4.0 rimossi gli inline styles • Demo: Others
  • 50. CheckList e RadioButtonList • 3.5 – RepeatLayout: Flow (span) e Table (table) • 4.0 – Nuove opzioni: • OrdererdList => li • UnorderedList => ul • Demo: Others
  • 51. Visual Studio 2010 Web Development Improvements • Migliorata la compatibilità dei CSS con gli standard 2.1 • HTML e JavaScript Snippets • JavaScript IntelliSense Enhancements
  • 52. HTML e JavaScript Snippets • Auto-complete dei tag nell’editor HTML • Snippet per JavaScript • Snippet per i controlli ASP.NET • Gli snippet forniscono gli attributi obbligatori (ID, DataSourceID, ControlToValidate, Text…) • Download di nuovi snippets • Creazione di nuovi snippets
  • 53. JavaScript IntelliSense • Riconosce oggetti generati dinamicamente (ad esempio registerNamespace) • Miglioramenti alla performance nell’analisi di grosse librerie • Maggiore compatibilità con third-party libraries • I commenti al codice sono dinamicamente aggiunti all’IntelliSense
  • 54. Web Application Deployment with Visual Studio 2010 • Web Packaging • Web.config Transformation • Database Deployment • One-Click Publish per le Web Applications
  • 55. Web config transformation • Web.config trasformabile tramite XML Document Transform • Versioni diverse per dev, production • Production = compilation debug=false!!
  • 56. Internet Explorer 9 • HTML 5 (draft!) • Performance • CSS3 (draft!) • Supporto SVG • Pinned sites
  • 57. HTML 5 • DRAFT! • Canvas • Nuovi tag – Audio – Video – Semantic tags • Client side storage • Scalable Vector Graphics
  • 58. HTML 5 intellisense • https://blogs.msdn.com/b/pietrobr/archive/2010/06/11/visual-studio-2010-e-html-5- intellisense.aspx
  • 59. Canvas • Area per disegnare “al volo” • L’output generato è una bitmap • Non è modificabile ma deve essere ridisegnato completamente • I comandi grafici sono inviati direttamente alla GPU
  • 60. Canvas <canvas id="myCanvas" width="200" height="200"> Your browser doesn’t support Canvas, sorry. </canvas> <script type="text/javascript"> var example = document.getElementById("myCanvas"); var context = example.getContext("2d"); context.fillStyle = "rgb(255,0,0)"; context.fillRect(30, 30, 50, 50); </script>
  • 61. <video> • È un tag html – Formato MPEG-4/H.264 video – Accelerazione hardware basata sulla GPU • Attributi • src • autoplay • controls • preload • loop • height & width
  • 62. <audio> • Come il video anche l’audio è un semplice tag HTML – Formato: MP3 and AAC audio • Attributi – src – autoplay – controls – preload
  • 63. Client side storage • String based key-value pair – Session storage – Local storage • Maggiore spazio dei cookie • Non invia dati al server ad ogni richiesta come i cookie
  • 64. Session storage • sessionStorage.setItem('fullname', ‘Rossi Mario'); • alert(“Ti chiami: " + sessionStorage.getItem('fullname')); • alert(“Ciao " + sessionStorage.fullname); • sessionStorage.removeItem('fullname');
  • 65. Local storage • localStorage.setItem('fullname', ‘Rossi Mario'); • alert(“Ti chiami: " + localStorage.getItem('fullname')); • alert(“Ciao " + localStorage.fullname); • localStorage.removeItem('fullname');
  • 66. Supporto SVG • Disegno vettoriale 2D tramite XML • Shapes – rect – circle – ellipse – line – polyline – polygon
  • 68. Semantic tags • Un semantic tag è un tag il cui nome descrive il contenuto senza aver un particolare comportamento • Nuovi tag – section – nav – article – aside – hgroup – header – footer – figure – figcaption – mark
  • 69. Layout classico Header Footer Sidebar Menu Contenuti Un struttura tipica contiene: <div id=“header”>…. <div id=“menu”>… <div id=“sidebar”>… <div id=“content”>… <div id=“footer”>…
  • 70. Semantic tags • <header> • <nav> (menu di navigazione) • <aside> (sidebar) • <section> … <article> … • <footer> • E nuovi relation (rel) (archives, pingback, icon, etc);
  • 71. Developer tools (aka F12) • Interfaccia visuale integrata per l’accesso a – HTML, CSS, DOM – Javascript Debugging – Javascript Profiling – Compatibilità dei siti con IE9 – Network Tab
  • 72. • Traccia tutte le richieste uscenti dalla pagina e le relative risposte • Informazioni sintetiche • Informazioni di dettaglio Network Tab
  • 76. Performance • Accelerazione tramite GPU • Nuovo engine Javascript “Chakra” – Multi core background compilation
  • 78. Accelerazione tramite GPU • <canvas> • <video> • <audio> • CSS3 • SVG 1.1 • Web fonts
  • 81. Riferimenti ASP.Net • ASP.NET 4.0 http://www.asp.net/learn/whitepapers/aspnet4 http://weblogs.asp.net/Scottgu/ • Internet Information Service http://www.iis.net/download/applicationwarmup http://learn.iis.net/page.aspx/124/introduction-to- applicationhostconfig/ • CDN http://www.asp.net/ajaxlibrary/CDN.ashx
  • 82. Riferimenti ASP.Net • Chart controls Microsoft Chart Controls Samples http://go.microsoft.com/fwlink/?LinkId=1283 00 • XSS: http://msdn.microsoft.com/en- us/library/ff649310.aspx
  • 83. Riferimenti IE9 Internet Explorer Developer Center on MSDN http://msdn.com/ie Windows User Experience Interaction Guidelines http://msdn.microsoft.com/en-us/library/aa511446.aspx Channel 9 Taskbar related videos http://channel9.msdn.com/tags/Taskbar/ http://channel9.msdn.com/Search/?Term=taskbar Icon Guidelines http://msdn.microsoft.com/en-us/library/aa511280.aspx