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

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 [email protected] http://dotnetcampania.org/blogs/michele

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

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

Template designed by

cert-path70-486: Developing ASP.NET MVC 4 Web Applications

Template designed by

Michele ApontePresidente DotNetCampania - MVP ASP.NET/IISCEO & Co-Founder Blexin [email protected]://dotnetcampania.org/blogs/michele

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

Template designed by

brought to you by

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

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

Page 4: Cert03   70-486 developing asp.net mvc 4 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

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

Let’

s g

o

Design the application

architecture

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Let’

s g

o

Design the user

experience

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

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

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

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

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

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

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

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

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

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

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

Let’

s g

o

Develop the user

experience

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

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

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

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

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

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

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

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

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

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

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

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

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

Let’

s g

o

Troubleshoot and

debug web

applications

Page 27: Cert03   70-486 developing asp.net mvc 4 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

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

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

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

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

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

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

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

Let’

s g

o

Design and implement

security

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

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

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

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

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

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

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

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

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

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

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

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

[email protected]

Grazie