SlideShare a Scribd company logo
1 of 37
Template designed by
cert-path
70-486: Developing ASP.NET MVC 4
Web Applications
Template designed by
Michele Aponte
Presidente DotNetCampania - MVP ASP.NET/IIS
CEO & Co-Founder Blexin Srls
michele.aponte@dotnetcampania.org
http://dotnetcampania.org/blogs/michele
Template designed by
brought to you by
Template designed by
• Esame 480: Programming in HTML5 with JavaScript
and CSS3
• Esame 486: Developing ASP.NET MVC 4 Web
Applications
• Esame 487: Developing Windows Azure and Web
Services
• (ve ne parlerà Roberto Freato nella sessione delle 13.20)
MCSD: Web Applications
Template designed by
• Design the application architecture (15-20%)
• Design the user experience (20-25%)
• Develop the user experience (15-20%)
• Troubleshoot and debug web applications (20-25%)
• Design and implement security (20-25%)
http://www.microsoft.com/learning/en-us/exam-70-486.aspx
agenda
Let’sgo
Design the application
architecture
Template designed by
Asp.Net MVC vi fornisce una naturale propensione alla
separazione delle responsabilità:
• La user interface viene definita nelle VIEW
• Le richieste dell’utente vengono gestite dalle ACTION dei
CONTROLLER
• La logica business viene gestista dal MODEL dell’applicazione
A seconda dei requisiti che avete decidete se gestire il risultato
di una richiesta client-side o server-side
Plan the application layers
Template designed by
Se avete requisiti di scalabilità scegliete tra una soluzione on-
premise, on-cloud o ibrida
• Per gestire efficacemente un alto numero di richieste potreste
avere più macchine in load balancing a rispondere agli utenti
• La gestione della sessione, nativamente in-process, in questi casi va configurata per essere
indipendente dalla macchina che sta servendo la richiesta:
• Database
• State Server
• Cache Distribuita
• Lo stesso vale per le risorse (immagini, file, ecc.): lo storage non deve essere locale alla
singola macchina
Design a distributed application
Template designed by
Se decidiamo di ospitare la nostra applicazione web in un cloud
service, possiamo intervenire in alcuni punti del ciclo di vita di
tale elemento
• OnStart()
• Run()
• StartupTask
Design and implement the Azure role life cycle
Template designed by
Http è un protocollo stateless, sta a noi utilizzare meccanismi di gestione dello
stato:
• Cookie
• Local storage
• Query string
• ViewState
• Session
Potete configurare da web.config la vostra strategia e usare provider custom per
favorire la scalabilità.
Configure state management
Template designed by
Per migliorare le performance dell’applicazione è possibile
implementare varie strategie di caching
• Output caching
• Data caching
• Http caching
• Azure caching
Design a caching strategy
Template designed by
In alcune circostanza può essere utile stabilire una connessione bidirezionale
tra client e server, in questo caso possiamo usare le Web Socket
• Upload di grandi quantità di dati in maniera asincrona (long-running
data transfer)
• Web games
• Qualsiasi esigenza di comunicazione bidirezionale in real-time
Ovviamente Web Socket deve essere supportato sia dal browser che dal
server, in alternativa si possono utilizzare anche tecniche come il long
polling. Se si vuole utilizzare una API che astrae al programmatore la tecnica
di comunicazione utilizzata è possibile utilizzare SignalR.
Design and implement a Web Socket strategy
Template designed by
Quando una richiesta arriva al nostro server questa viene processata da più
moduli HTTP dopodichè affidata a un singolo HTTP Handler
• Creando un modulo HTTP possiamo inserirci nella pipeline di IIS e fornire
comportamenti personalizzati nella gestione delle richieste
• Implementiamo gli eventi Init(HttpApplication) e Dispose() di IHttpModule
• Eventualmente gestiamo gli altri eventi del ciclo di vita del modulo
• Aggiungiamo l’handler alla pipeline da web.config (sezione <HttpModules>)
• Creando un event handler possiamo fornire il codice da eseguire in
risposta ad una particolare richiesta:
• Implementiamo l’evento ProcessRequest(HttpContext) e la proprietà IsReusable di IHttpHAndler
• Aggiungiamo l’handler al web.config (sezione <HttpHandlers>)
Design HTTP modules and handlers
Let’sgo
Design the user
experience
Template designed by
La definizione della user interface di un’applicazione web è costituita
da markup HTML, stili CSS e codice Javascript
• E’ possibile utilizzare media query (sia da CSS che da Javascript)
per adattare la UI allo spazio a disposizione
• L’eleborazione dinamica del DOM mediante javascript (e/o
jQuery) permette di aggiornare parti della pagina e
aggiungere/rimuovere classi CSS
• Framework come bootstrap semplificano la definizione della UI
delle applicazione web
Apply the user interface design for a web application
Template designed by
Per ottimizzare il traffico tra client e server ed evitare richieste
inutili al server è possibile utilizzare framework javascript e
plugin
• Validazione client side con jQuery unubontrusive validation
• Rendering parziale con Ajax
• Elaborazione del DOM con jQuery
Design and implement UI behavior
Template designed by
In MVC è possibile diminuire la complessità e favorire il riutilizzo
di parti di view:
• Partial View
• Layout e MasterPage
• Aspx e Razor View Engine
Compose the UI layout of an application
Template designed by
Garantire la compatibilità cross-browser è spesso un requisito
implicito delle applicazioni web:
• Verificare a run-time le feature disponibili del browser
• Usare proprietà CSS specifiche del vendor
• Broswer desktop e browser mobile
Enhance application behavior and style based on browser
feature detection
Template designed by
Per migliorare l’esperienza utente, molto diversa tra desktop e
mobile, possiamo adottare diverse strategie:
• Responsive design (Html5, CSS3, Javascript)
• Pagine diverse per dispositivi diversi (Display Modes)
• Framework per il mobile (jQuery Mobile)
Plan an adaptive UI layout
Let’sgo
Develop the user
experience
Template designed by
Il successo di un’applicazione web può dipendere fortemente da
come è indicizzata dai motori di ricerca:
• Usare tag semantici (HTML5) per dare significato ai contenuti
• Attributi ARIA per l’accessibilità
• Utilizzare gli strumenti di Visul Studio per verificare la
correttezza dell’HTML generato
Plan for search engine optimization and accessibility
Template designed by
Applicazioni che hanno un mercato internazionale (sul web è
molto frequente ) hanno necessità di essere
internazionalizzate:
• File di risorse
• Impostazione della culture corrente server side
• Impostazione della culture corrente client side
Plan and implement globalization and localization
Template designed by
In rispetto del principio di singola responsabilità in MVC potete
utilizzare «attributi» speciali per sollevare le action da alcune
funzionalità necessarie:
• Action Filters (Authorize, HandleError,
ValidateAntiForgeryToken, ecc.)
• Applicabili sulla singola action, sul controller o globalmente (Global Filters)
• Action Results (ViewResult, JsonResult, ecc.)
• Model Bindings
Design and implement MVC controllers and actions
Template designed by
Asp.Net MVC basa la sua configurazione su convenzioni. L’individuazione
del controller, la action e la view con cui rispondere ad una richiesta ad
esempio è basata sulla regola di routing di default. Il routing è un
componente importantissimo del framework e altamente personalizzabile:
• Regole di routing per specifici URL
• Route Constraints
• Custom route parameters
E’ possibile inoltre definire Aree specifiche dell’applicazione, per suddividere
una singola applicazione in più sezioni funzionali che rispondono a
particolare URL, come http://www.dominio.com/Admin/News/Details/1
Design and implement routes
Template designed by
Asp.Net MVC è un framework fortemente estendibile:
• Action Filters Custom
• Action Results Custom
• Controller Factory
• Model Binders Custom
• View Engines
Control application behavior by using MVC extensibility points
Template designed by
Lo scambio dati tra server è client è uno degli aspetti più
importanti da curare per migliorare le performance e la
responsività delle applicazioni web
• Bundles
• Minification
• Uso di CDN
Reduce network bandwidth
Let’sgo
Troubleshoot and debug
web applications
Template designed by
Avete vari strumenti a disposizione per individure problemi di
funzionamento e performance della vostra applicazione:
• Tracing
• Logging
• Debugging
• Intellitrace
• Code Contracts
• Performance Monitor
Prevent and troubleshoot runtime issues
Template designed by
Una applicazione ben sviluppata deve avere una buona
strategia di gestione delle eccezioni
• Gestione delle eccezioni tra layer applicativi diversi
• Pagine di errore custom
• Global.asax
• Http Handler Custom
• Web.config
Design an exception handling strategy
Template designed by
Asp.Net MVC favorisce la creazione di test automatici:
• Creare un progetto di unit test
• Mockare le dipendenze
• Istanziare un controller
• Invocare una action
• Fare una asserzione
• Eseguire i test
E’ inoltre possibile utilizzare i web tests e browser link
Test a web application
Template designed by
Quando hostiamo la nostra applicazione su Azure possiamo
debuggarla utilizzando:
• Azure Diagnostic API
• Event log, performance counter, crush dumps
• Intellitrace e RDP
• Remote debugging
• Server Explorer
Debug an Azure application
Let’sgo
Design and implement
security
Template designed by
Asp.Net supporta diversi tipi di autenticazione
• Form
• Windows
• Custom
Il framework fornisce una API, chiamata Membership API, che è possibile
personalizzare per utilizzare meccanismi di autenticazione custom.
In alternativa è possibile utilizzare Asp.Net Identity, la cui implementazione
di default utilizza Entity Framework Code First
Configure authentication
Template designed by
Una volta autenticato l’utente è possibile utilizzare i ruoli per
gestirne le autorizzazioni:
• Creare e associare ruoli agli utenti
• Impostare la configurazione dei permessi attraverso il
web.config o da codice
• Creare role provider custom
Configure and apply authorization
Template designed by
In scenari distribuiti è possibile utilizzare l’autenticazione
federata:
• Azure Access Control Service
• Custom security token con Windows Identity Foundation
• oAuth, OpenID, LiveID
Design and implement claims-based authentication across
federated identity stores
Template designed by
E’ possibile sfruttare le funzionalità crittografiche per:
• Crittografare i dati applicativi
• Crittografare le sezioni di configurazione
• Firmare le informazioni per impedirne il tampering
Manage data integrity
Template designed by
Mettere in sicurezza un’applicazione web, può significare:
• Utilizzare certificati per stabilire connessioni sicure (SSL)
• Hashing delle password
• Encoding dell’HTML
• Parametrizzare le query per impedire Sql Injection
• Cross-site request forgeries (XSRF)
Implement a secure site with ASP.NET
Template designed by
Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
michele.aponte@dotnetcampania.org
Grazie

More Related Content

What's hot

Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiGiuneco S.r.l
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Fabrizio Bernabei
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)Sabino Labarile
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the WebClaudio Gandelli
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiAndrea Dottor
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesAndrea Dottor
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Andrea Agnoletto
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIAdiodorato
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioGiuneco S.r.l
 

What's hot (12)

Selenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio BenedettiSelenium e testing web - di Alessio Benedetti
Selenium e testing web - di Alessio Benedetti
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor Pages
 
Blazor: are we ready for the launch?
Blazor: are we ready for the launch?Blazor: are we ready for the launch?
Blazor: are we ready for the launch?
 
Powerful asp.net 4 e ie9
Powerful asp.net 4 e ie9Powerful asp.net 4 e ie9
Powerful asp.net 4 e ie9
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIA
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
 

Viewers also liked

El deporte de_orientacion_en_el_ambito_educativo
El deporte de_orientacion_en_el_ambito_educativoEl deporte de_orientacion_en_el_ambito_educativo
El deporte de_orientacion_en_el_ambito_educativoalonsocr23
 
Gam01 introduzione a kinect
Gam01   introduzione a kinectGam01   introduzione a kinect
Gam01 introduzione a kinectDotNetCampus
 
Ordonanta de urgenta_nr 21 din 2004
Ordonanta de urgenta_nr 21 din 2004Ordonanta de urgenta_nr 21 din 2004
Ordonanta de urgenta_nr 21 din 2004omirel
 
Ventajas y desventajas de las redes sociales
Ventajas y desventajas de las redes socialesVentajas y desventajas de las redes sociales
Ventajas y desventajas de las redes socialesFanitha Sandoval
 
綠黨高雄支黨部懶人包
綠黨高雄支黨部懶人包綠黨高雄支黨部懶人包
綠黨高雄支黨部懶人包Z-da Yang
 
Ifma debat edwin de ceukelaire_integraalplannen_realty_13-05-14
Ifma debat edwin de ceukelaire_integraalplannen_realty_13-05-14Ifma debat edwin de ceukelaire_integraalplannen_realty_13-05-14
Ifma debat edwin de ceukelaire_integraalplannen_realty_13-05-14Muriel Walter
 
establecimiento zr lomas de ancon
establecimiento zr lomas de anconestablecimiento zr lomas de ancon
establecimiento zr lomas de anconJoel Palomares
 

Viewers also liked (20)

El deporte de_orientacion_en_el_ambito_educativo
El deporte de_orientacion_en_el_ambito_educativoEl deporte de_orientacion_en_el_ambito_educativo
El deporte de_orientacion_en_el_ambito_educativo
 
Eb 1 lamp - 720401 - kab toli toli 1
Eb 1 lamp - 720401 - kab toli toli 1Eb 1 lamp - 720401 - kab toli toli 1
Eb 1 lamp - 720401 - kab toli toli 1
 
Article 8
Article  8Article  8
Article 8
 
5 1就是愛畫
5 1就是愛畫5 1就是愛畫
5 1就是愛畫
 
Gam01 introduzione a kinect
Gam01   introduzione a kinectGam01   introduzione a kinect
Gam01 introduzione a kinect
 
Ordonanta de urgenta_nr 21 din 2004
Ordonanta de urgenta_nr 21 din 2004Ordonanta de urgenta_nr 21 din 2004
Ordonanta de urgenta_nr 21 din 2004
 
Tarea 4. ccbb
Tarea 4. ccbbTarea 4. ccbb
Tarea 4. ccbb
 
Word press
Word pressWord press
Word press
 
Huelga02
Huelga02Huelga02
Huelga02
 
Ventajas y desventajas de las redes sociales
Ventajas y desventajas de las redes socialesVentajas y desventajas de las redes sociales
Ventajas y desventajas de las redes sociales
 
Presta shop
Presta shopPresta shop
Presta shop
 
綠黨高雄支黨部懶人包
綠黨高雄支黨部懶人包綠黨高雄支黨部懶人包
綠黨高雄支黨部懶人包
 
Universidad popular 2012 (1)
Universidad popular 2012 (1)Universidad popular 2012 (1)
Universidad popular 2012 (1)
 
Tervis
TervisTervis
Tervis
 
Ifma debat edwin de ceukelaire_integraalplannen_realty_13-05-14
Ifma debat edwin de ceukelaire_integraalplannen_realty_13-05-14Ifma debat edwin de ceukelaire_integraalplannen_realty_13-05-14
Ifma debat edwin de ceukelaire_integraalplannen_realty_13-05-14
 
Reglas de seguridad e higiene
Reglas de seguridad e higieneReglas de seguridad e higiene
Reglas de seguridad e higiene
 
establecimiento zr lomas de ancon
establecimiento zr lomas de anconestablecimiento zr lomas de ancon
establecimiento zr lomas de ancon
 
Huelga01
Huelga01Huelga01
Huelga01
 
Reglamento Régimen Interno CAI Calasparra
Reglamento Régimen Interno CAI CalasparraReglamento Régimen Interno CAI Calasparra
Reglamento Régimen Interno CAI Calasparra
 
Presentación post
Presentación postPresentación post
Presentación post
 

Similar to Cert03 70-486 developing asp.net mvc 4 web applications

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
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Framework di sviluppo web: introduzione a bootstrap e boostack
Framework di sviluppo web: introduzione a bootstrap e boostackFramework di sviluppo web: introduzione a bootstrap e boostack
Framework di sviluppo web: introduzione a bootstrap e boostackStefano Spagnolo
 
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
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockoutDotNetCampus
 
Introduzione - Web design
Introduzione - Web designIntroduzione - Web design
Introduzione - Web designgowow
 
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
 
Acg enterprise tech 2016-09_28
Acg enterprise   tech 2016-09_28Acg enterprise   tech 2016-09_28
Acg enterprise tech 2016-09_28PRAGMA PROGETTI
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e MicroserviziConsulthinkspa
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 

Similar to Cert03 70-486 developing asp.net mvc 4 web applications (20)

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
 
Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0Alessandro Forte - ASP.Net 4.0
Alessandro Forte - ASP.Net 4.0
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Framework di sviluppo web: introduzione a bootstrap e boostack
Framework di sviluppo web: introduzione a bootstrap e boostackFramework di sviluppo web: introduzione a bootstrap e boostack
Framework di sviluppo web: introduzione a bootstrap e boostack
 
Sviluppare Azure Web Apps
Sviluppare Azure Web AppsSviluppare Azure Web Apps
Sviluppare Azure Web Apps
 
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
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Tesi8
Tesi8Tesi8
Tesi8
 
Virtual Agency
Virtual AgencyVirtual Agency
Virtual Agency
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
 
Esempi pratici
Esempi praticiEsempi pratici
Esempi pratici
 
Introduzione - Web design
Introduzione - Web designIntroduzione - Web design
Introduzione - Web design
 
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)
 
Acg enterprise tech 2016-09_28
Acg enterprise   tech 2016-09_28Acg enterprise   tech 2016-09_28
Acg enterprise tech 2016-09_28
 
Web dynpro for abap 02
Web dynpro for abap 02Web dynpro for abap 02
Web dynpro for abap 02
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e Microservizi
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 

More from DotNetCampus

ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTDotNetCampus
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONSDotNetCampus
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#DotNetCampus
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DotNetCampus
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015DotNetCampus
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATAPREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATADotNetCampus
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDotNetCampus
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREFROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREDotNetCampus
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWDotNetCampus
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICEDotNetCampus
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDDotNetCampus
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!DotNetCampus
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++DotNetCampus
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBDotNetCampus
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSSFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSDotNetCampus
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTDotNetCampus
 

More from DotNetCampus (20)

ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOT
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATAPREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREFROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEW
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICE
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BAND
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUB
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSSFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
 
INTRO TO XAMARIN
INTRO TO XAMARININTRO TO XAMARIN
INTRO TO XAMARIN
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
 

Cert03 70-486 developing asp.net mvc 4 web applications

  • 1. Template designed by cert-path 70-486: Developing ASP.NET MVC 4 Web Applications Template designed by Michele Aponte Presidente DotNetCampania - MVP ASP.NET/IIS CEO & Co-Founder Blexin Srls michele.aponte@dotnetcampania.org http://dotnetcampania.org/blogs/michele
  • 3. Template designed by • Esame 480: Programming in HTML5 with JavaScript and CSS3 • Esame 486: Developing ASP.NET MVC 4 Web Applications • Esame 487: Developing Windows Azure and Web Services • (ve ne parlerà Roberto Freato nella sessione delle 13.20) MCSD: Web Applications
  • 4. Template designed by • Design the application architecture (15-20%) • Design the user experience (20-25%) • Develop the user experience (15-20%) • Troubleshoot and debug web applications (20-25%) • Design and implement security (20-25%) http://www.microsoft.com/learning/en-us/exam-70-486.aspx agenda
  • 6. Template designed by Asp.Net MVC vi fornisce una naturale propensione alla separazione delle responsabilità: • La user interface viene definita nelle VIEW • Le richieste dell’utente vengono gestite dalle ACTION dei CONTROLLER • La logica business viene gestista dal MODEL dell’applicazione A seconda dei requisiti che avete decidete se gestire il risultato di una richiesta client-side o server-side Plan the application layers
  • 7. Template designed by Se avete requisiti di scalabilità scegliete tra una soluzione on- premise, on-cloud o ibrida • Per gestire efficacemente un alto numero di richieste potreste avere più macchine in load balancing a rispondere agli utenti • La gestione della sessione, nativamente in-process, in questi casi va configurata per essere indipendente dalla macchina che sta servendo la richiesta: • Database • State Server • Cache Distribuita • Lo stesso vale per le risorse (immagini, file, ecc.): lo storage non deve essere locale alla singola macchina Design a distributed application
  • 8. Template designed by Se decidiamo di ospitare la nostra applicazione web in un cloud service, possiamo intervenire in alcuni punti del ciclo di vita di tale elemento • OnStart() • Run() • StartupTask Design and implement the Azure role life cycle
  • 9. Template designed by Http è un protocollo stateless, sta a noi utilizzare meccanismi di gestione dello stato: • Cookie • Local storage • Query string • ViewState • Session Potete configurare da web.config la vostra strategia e usare provider custom per favorire la scalabilità. Configure state management
  • 10. Template designed by Per migliorare le performance dell’applicazione è possibile implementare varie strategie di caching • Output caching • Data caching • Http caching • Azure caching Design a caching strategy
  • 11. Template designed by In alcune circostanza può essere utile stabilire una connessione bidirezionale tra client e server, in questo caso possiamo usare le Web Socket • Upload di grandi quantità di dati in maniera asincrona (long-running data transfer) • Web games • Qualsiasi esigenza di comunicazione bidirezionale in real-time Ovviamente Web Socket deve essere supportato sia dal browser che dal server, in alternativa si possono utilizzare anche tecniche come il long polling. Se si vuole utilizzare una API che astrae al programmatore la tecnica di comunicazione utilizzata è possibile utilizzare SignalR. Design and implement a Web Socket strategy
  • 12. Template designed by Quando una richiesta arriva al nostro server questa viene processata da più moduli HTTP dopodichè affidata a un singolo HTTP Handler • Creando un modulo HTTP possiamo inserirci nella pipeline di IIS e fornire comportamenti personalizzati nella gestione delle richieste • Implementiamo gli eventi Init(HttpApplication) e Dispose() di IHttpModule • Eventualmente gestiamo gli altri eventi del ciclo di vita del modulo • Aggiungiamo l’handler alla pipeline da web.config (sezione <HttpModules>) • Creando un event handler possiamo fornire il codice da eseguire in risposta ad una particolare richiesta: • Implementiamo l’evento ProcessRequest(HttpContext) e la proprietà IsReusable di IHttpHAndler • Aggiungiamo l’handler al web.config (sezione <HttpHandlers>) Design HTTP modules and handlers
  • 14. Template designed by La definizione della user interface di un’applicazione web è costituita da markup HTML, stili CSS e codice Javascript • E’ possibile utilizzare media query (sia da CSS che da Javascript) per adattare la UI allo spazio a disposizione • L’eleborazione dinamica del DOM mediante javascript (e/o jQuery) permette di aggiornare parti della pagina e aggiungere/rimuovere classi CSS • Framework come bootstrap semplificano la definizione della UI delle applicazione web Apply the user interface design for a web application
  • 15. Template designed by Per ottimizzare il traffico tra client e server ed evitare richieste inutili al server è possibile utilizzare framework javascript e plugin • Validazione client side con jQuery unubontrusive validation • Rendering parziale con Ajax • Elaborazione del DOM con jQuery Design and implement UI behavior
  • 16. Template designed by In MVC è possibile diminuire la complessità e favorire il riutilizzo di parti di view: • Partial View • Layout e MasterPage • Aspx e Razor View Engine Compose the UI layout of an application
  • 17. Template designed by Garantire la compatibilità cross-browser è spesso un requisito implicito delle applicazioni web: • Verificare a run-time le feature disponibili del browser • Usare proprietà CSS specifiche del vendor • Broswer desktop e browser mobile Enhance application behavior and style based on browser feature detection
  • 18. Template designed by Per migliorare l’esperienza utente, molto diversa tra desktop e mobile, possiamo adottare diverse strategie: • Responsive design (Html5, CSS3, Javascript) • Pagine diverse per dispositivi diversi (Display Modes) • Framework per il mobile (jQuery Mobile) Plan an adaptive UI layout
  • 20. Template designed by Il successo di un’applicazione web può dipendere fortemente da come è indicizzata dai motori di ricerca: • Usare tag semantici (HTML5) per dare significato ai contenuti • Attributi ARIA per l’accessibilità • Utilizzare gli strumenti di Visul Studio per verificare la correttezza dell’HTML generato Plan for search engine optimization and accessibility
  • 21. Template designed by Applicazioni che hanno un mercato internazionale (sul web è molto frequente ) hanno necessità di essere internazionalizzate: • File di risorse • Impostazione della culture corrente server side • Impostazione della culture corrente client side Plan and implement globalization and localization
  • 22. Template designed by In rispetto del principio di singola responsabilità in MVC potete utilizzare «attributi» speciali per sollevare le action da alcune funzionalità necessarie: • Action Filters (Authorize, HandleError, ValidateAntiForgeryToken, ecc.) • Applicabili sulla singola action, sul controller o globalmente (Global Filters) • Action Results (ViewResult, JsonResult, ecc.) • Model Bindings Design and implement MVC controllers and actions
  • 23. Template designed by Asp.Net MVC basa la sua configurazione su convenzioni. L’individuazione del controller, la action e la view con cui rispondere ad una richiesta ad esempio è basata sulla regola di routing di default. Il routing è un componente importantissimo del framework e altamente personalizzabile: • Regole di routing per specifici URL • Route Constraints • Custom route parameters E’ possibile inoltre definire Aree specifiche dell’applicazione, per suddividere una singola applicazione in più sezioni funzionali che rispondono a particolare URL, come http://www.dominio.com/Admin/News/Details/1 Design and implement routes
  • 24. Template designed by Asp.Net MVC è un framework fortemente estendibile: • Action Filters Custom • Action Results Custom • Controller Factory • Model Binders Custom • View Engines Control application behavior by using MVC extensibility points
  • 25. Template designed by Lo scambio dati tra server è client è uno degli aspetti più importanti da curare per migliorare le performance e la responsività delle applicazioni web • Bundles • Minification • Uso di CDN Reduce network bandwidth
  • 27. Template designed by Avete vari strumenti a disposizione per individure problemi di funzionamento e performance della vostra applicazione: • Tracing • Logging • Debugging • Intellitrace • Code Contracts • Performance Monitor Prevent and troubleshoot runtime issues
  • 28. Template designed by Una applicazione ben sviluppata deve avere una buona strategia di gestione delle eccezioni • Gestione delle eccezioni tra layer applicativi diversi • Pagine di errore custom • Global.asax • Http Handler Custom • Web.config Design an exception handling strategy
  • 29. Template designed by Asp.Net MVC favorisce la creazione di test automatici: • Creare un progetto di unit test • Mockare le dipendenze • Istanziare un controller • Invocare una action • Fare una asserzione • Eseguire i test E’ inoltre possibile utilizzare i web tests e browser link Test a web application
  • 30. Template designed by Quando hostiamo la nostra applicazione su Azure possiamo debuggarla utilizzando: • Azure Diagnostic API • Event log, performance counter, crush dumps • Intellitrace e RDP • Remote debugging • Server Explorer Debug an Azure application
  • 32. Template designed by Asp.Net supporta diversi tipi di autenticazione • Form • Windows • Custom Il framework fornisce una API, chiamata Membership API, che è possibile personalizzare per utilizzare meccanismi di autenticazione custom. In alternativa è possibile utilizzare Asp.Net Identity, la cui implementazione di default utilizza Entity Framework Code First Configure authentication
  • 33. Template designed by Una volta autenticato l’utente è possibile utilizzare i ruoli per gestirne le autorizzazioni: • Creare e associare ruoli agli utenti • Impostare la configurazione dei permessi attraverso il web.config o da codice • Creare role provider custom Configure and apply authorization
  • 34. Template designed by In scenari distribuiti è possibile utilizzare l’autenticazione federata: • Azure Access Control Service • Custom security token con Windows Identity Foundation • oAuth, OpenID, LiveID Design and implement claims-based authentication across federated identity stores
  • 35. Template designed by E’ possibile sfruttare le funzionalità crittografiche per: • Crittografare i dati applicativi • Crittografare le sezioni di configurazione • Firmare le informazioni per impedirne il tampering Manage data integrity
  • 36. Template designed by Mettere in sicurezza un’applicazione web, può significare: • Utilizzare certificati per stabilire connessioni sicure (SSL) • Hashing delle password • Encoding dell’HTML • Parametrizzare le query per impedire Sql Injection • Cross-site request forgeries (XSRF) Implement a secure site with ASP.NET
  • 37. Template designed by Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi michele.aponte@dotnetcampania.org Grazie