@Web@Work
ASP.NET Web APIPietro Libro
http://blogs.ugidotnet.org/[email protected]://www.linkedin.com/in/pietrolibro
@Web@WorkAgenda
• Web API– SOAP & REST
• Web API Client– JQuery– Windows (8) Client
• Web API Security• Web API Dependency Resolver
@Web@Work
REST (Representational State Transfer)• Da Wikipedia
«Representational state transfer (REST) è un tipo di architettura
software per i sistemi di ipertesto distribuiti come il World Wide
Web. I termini "representational state transfer" e "REST" furono
introdotti nel 2000 nella tesi di dottorato di Roy Fielding, uno dei
principali autori delle specifiche dell'Hypertext Transfer Protocol
(HTTP), termine ampiamente usato nella comunità di Internet»
@Web@Work
REST (Representational State Transfer)• Punti chiave:
– Risorsa : stato dell’applicazione e funzionalità – Ogni risorsa è unicamente indirizzabile tramite una sintassi
universale (URI)– Protocollo:
• Client-Server• Stateless• Cachable• A livelli
@Web@WorkREST, SOAP & REST
• REST -> Risorsa– Le risorse sono accessibili tramite operazioni HTTP– ROA (Resource Oriented Architecture)– HTTP a livello applicativo– Esalta la predisposizione del Web come piattaforma per l’elaborazione
distribuita– Non prevede modalità per descrivere l’interazione con una risorsa (WADL)
• SOAP -> Servizio– Metodi (servizi richiamabili da uno o più client)– SOA (Service Oriented Architecture)– HTTP come protocollo di trasporto (utilizza anche altri protocolli)– Basate su chiamate remote– WSDL, Tool per la creazione automatica di Client (dipendenza tra client-server)
@Web@WorkREST, SOAP & REST
• REST -> Risorsa– Non tipizzazione dei dati– Differenti formati di rappresentazione (ad esempio JSON)– Consumo dei servizi da qualsiasi piattaforma
• SOAP -> Servizio– Forte tipizzazione dei dati– Formato dati XML– Sessioni, Routing e Transazioni
@Web@WorkWeb API Story
ASP.NET
WCF REST Starter Kit
WCF Web API ASP.NET MVC + RESTful
WCF
ASP.NET Web API
@Web@WorkWeb API Client
• Web Browser + Jquery• Applicazioni Web
– ASP.NET– PHP– ...
• Applicazioni Window– Windows Form– WPF– Window 8 App
• Mobile Device• Client che abbiano accesso ad Internet e HTTP
@Web@WorkToolbox
• .NET Framework 4.5– Visual Studio 2012– Visual Studio Express 2012 for Web
• .NET Framework 4.0– Visual Studio 2010 con ASP.NET MVC 4– Visual Studio 2010 Developer Express con ASP.NET MVC 4
• Installazione tramite Web Platform Installer– http://www.microsoft.com/web/downloads/platform.aspx
@Web@Work
ASP.NET Web API
DEMOWeb API & Web API Client
@Web@WorkWeb API Security
• RESTful è RESTful => Stateless– Non possiamo fare assunzioni tra una chiamata e l’altra,
possono essere completamente indipendenti l’una dall’altra– Bisogna verificare autenticazione\autorizzazione ad ogni
richiesta– HTTP\HTTPS
• Come per ASP.NET MVC, «Controller» ed «Action» supportano:– [Authorize]– [AllowAnonymous]
@Web@WorkWeb API Security
• Message Handler– Riceve una richiesta HTTP e ritorna una riposta HTTP
• I Message Handlers possono lavorare in catena– Adatti per cross-cutting concerns (ad esempio Security) a
livello HTTP
• Un Message Handler può– Leggere e modificare una richiesta– Aggiungere Header ad una risposta– Validare una richiesta prima che raggiunga un controller
@Web@WorkWeb API Security
@Web@WorkWeb API Dependency Resolver
• Dependency– «Oggetto o interfaccia che un oggetto richiede per svolgere il
proprio lavoro»
• Web API dependency resolver– Permette di «iniettare» le dipendenze richieste da un ASP.NET
Web Api Controller• Un oggetto non è più responsabile di creare da se le dipendenze di cui
necessità• Le dipendenze necessarie verranno fornite da «qualcuno» dall’esterno
@Web@WorkWeb API Self Host
• Web API non richiede l’utilizzo esclusivo di IIS• Possiamo «ospitare» Web API in un processo • Tutto quello che ci serve:
– NuGet Packet Manager– Microsoft.AspNet.WebApi.SelfHost,
@Web@WorkCosa non abbiamo visto
• Media Type Formatters• Content Negotation• Testing & Debugging• OData & Web API
@Web@WorkRiferimenti
• ASP.NET http://www.asp.net/• ASP.NET Web API http://www.asp.net/web-api
– Tutorial– Video– Esempi
• «Pro ASP.NET Web API, HTTP Web Services in ASP.NET» http://www.apress.com/9781430247258
Web@WorkGrazie agli sponsor