ASP.NET Web API
            Pietro Libro
http://blogs.ugidotnet.org/PietroLibroBlog
pietro.libro@domusdotnet.org
http://www.linkedin.com/in/pietrolibro




    Web@Work
Web@Work
Agenda
• Web API
  –   SOAP & REST

• Web API Client
  – JQuery

  – Windows (8) Client

• Web API Security

• Web API Dependency Resolver
REST (Representational State                                  Web@Work
 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»
REST (Representational State                             Web@Work
 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@Work
    REST, 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@Work
    REST, 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@Work
Web API Story

           WCF                                 ASP.NET




    WCF REST Starter Kit




                                             ASP.NET MVC +
       WCF Web API
                                                 RESTful




                           ASP.NET Web API
Web@Work
    Web 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@Work
 Toolbox
• .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
ASP.NET Web API               Web@Work




                               DEMO
                  Web API & Web API Client
Web@Work
Web 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 autenticazioneautorizzazione ad ogni richiesta

  – HTTPHTTPS

• Come per ASP.NET MVC, «Controller» ed «Action»
  supportano:
  – [Authorize]

  – [AllowAnonymous]
Web@Work
Web 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@Work
Web API Security
Web@Work
ASP.NET Web API




                  DEMO
                     Security
Web@Work
Web 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@Work
ASP.NET Web API




                           DEMO
                  Dependency Resolver
Web@Work
 Web 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@Work
ASP.NET Web API




                        DEMO
                  Web Api Self-Host
Web@Work
Cosa non abbiamo visto
• Media Type Formatters

• Content Negotation

• Testing & Debugging

• OData & Web API
Web@Work
Riferimenti
• 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@Work
Grazie agli sponsor

ASP.NET Web API

  • 1.
    ASP.NET Web API Pietro Libro http://blogs.ugidotnet.org/PietroLibroBlog pietro.libro@domusdotnet.org http://www.linkedin.com/in/pietrolibro Web@Work
  • 2.
    Web@Work Agenda • Web API – SOAP & REST • Web API Client – JQuery – Windows (8) Client • Web API Security • Web API Dependency Resolver
  • 3.
    REST (Representational State Web@Work 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»
  • 4.
    REST (Representational State Web@Work 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
  • 5.
    Web@Work REST, 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)
  • 6.
    Web@Work REST, 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
  • 7.
    Web@Work Web API Story WCF ASP.NET WCF REST Starter Kit ASP.NET MVC + WCF Web API RESTful ASP.NET Web API
  • 8.
    Web@Work Web 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
  • 9.
    Web@Work Toolbox • .NETFramework 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
  • 10.
    ASP.NET Web API Web@Work DEMO Web API & Web API Client
  • 11.
    Web@Work Web 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 autenticazioneautorizzazione ad ogni richiesta – HTTPHTTPS • Come per ASP.NET MVC, «Controller» ed «Action» supportano: – [Authorize] – [AllowAnonymous]
  • 12.
    Web@Work Web 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
  • 13.
  • 14.
  • 15.
    Web@Work Web API DependencyResolver • 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
  • 16.
    Web@Work ASP.NET Web API DEMO Dependency Resolver
  • 17.
    Web@Work Web APISelf 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,
  • 18.
    Web@Work ASP.NET Web API DEMO Web Api Self-Host
  • 19.
    Web@Work Cosa non abbiamovisto • Media Type Formatters • Content Negotation • Testing & Debugging • OData & Web API
  • 20.
    Web@Work Riferimenti • 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
  • 21.