Upload
pietro-libro
View
773
Download
1
Embed Size (px)
DESCRIPTION
Presentation of talk "ASP.NET Web API 2" - Event "Visual Studio 2013 - A New kind In Town" organized by DomusDotNet, Microsoft Rome, Italy.
Citation preview
@@ASP.NET Web API 2
Pietro Librohttp://blogs.ugidotnet.org/PietroLibroBlog
http://www.linkedin.com/in/pietrolibro
@Agenda
• Web API:– REST in pillole
• Web API 2, novità:
– Attribute Routing
– Batch Requests
– IHttpActionResult
– Cross-Origin Requests (CORS)
– External Authentication Services
– Nuove features per OData
@REST in “Pillole”
– Architettura software per sistemi di ipertesto distribuiti come il
WWW
– Principi che delineano come le risorse sono definite ed
indirizzate
– Risorsa
• Univocamente indirizzabile tramite URI
• Stato dell’applicazione e funzionalità
– Protocollo:
• Client-Server
• Stateless
• Cachable
• A livelli
– HTTP\HTTPS
@Web API 2: Attribute Routing
• Routing: Match tra URI ed azioni
• (V1) Routing basato su convenzioni
– Difficile (non impossibile ) mappare URI del tipo
Cliente/1/Ordini
• NEW! Routing basato su attributi
– URI User Friendly che descrivono risorse e\o gerarchie di
risorse
– Api Versioning
• API\V1\Clienti
• API\V2\Clienti
@Web API 2: Attribute Routing
• NEW! Routing basato su attributi
– Overloaded URI segments
• Ordini/1
• Ordini/Pending
– Multiple Parameter Types
• Ordini/1
• Ordini/29/11/2013
– Routing Constraints
@Web API 2: Attribute Routing
• «Attivare» Attribute Routing
– MapHttpAttributeRoutes() in WebApiConfig
– Uso dell’attributo Route
– Uso dell’attributo RoutePrefix
@ASP.NET Web API 2
DEMOAttribute Routing
@Web API 2: Batch API
• Feature introdotta con Web Api 2
• Web Api «Batch Requests»
– Più richieste Web Api in singola Request HTTP
– Singola Response HTTP con risposta a tutte le richieste Web
Api
• Numero di chiamate al Server ridotte (round-trip)
+ Performance
+ Scalabilità
• Requisito
– Registrare una «Rotta» per il Batch Handler
@ASP.NET Web API 2
DEMOBatch
@Web API 2: IHttpActionResult
• Web Api Response
- Void
- Specifica istanza di un oggetto
- Conversione «automatica» a HttpResponseMessage
- Creazione «manuale» di un’istanza di HttpResponseMessage
- NEW! IHttpActionResult
- Singolo metodo da implementare
- La sua implementazione fornisce le «istruzioni» di come la Response
debba essere creata, una sorta di HttpResponseMessage «Factory»
@Web API 2: IHttpActionResult
• IHttpActionResult
– Minore duplicazione del codice
• es: utilizzo stessa implementazione per Controller diversi
- Supporto diretto all’HTML con Razor
- Definizione di «azioni» il cui risultato può essere facilmente «parsato» dal
View Engine di Razor
@ASP.NET Web API 2
DEMOIHttpActionResult
@Web API 2: Cross-Origin Requests• Browser Security (Same Origin Policy)
– Evita che una pagina web possa effettuare richieste Ajax verso un altro
dominio
Web API HTMLCross-Origin Request
http://www.domain1.it http://www.domain2.it
WebService WebClient
@Web API 2: Cross-Origin Requests• CORS
– Cross Origin Resource Sharing è uno standard W3C che permette di
«rilassare» il vincolo Same Origin Policy
• Alcune Cross-Origin Request sono accettate, altre sono rifiutate
– NEW! Supporto CORS in ASP.NET Web Api 2 (Package NuGet)
• Abilitazione per Action
• Abilitazione per Controller
• Abilitazione a livello Globale
Web API HTMLCross-Origin Request
http://www.domain1.it http://www.domain2.it
WebService WebClient
@ASP.NET Web API 2
DEMOCross-Origin Requests (CORS)
@Web API 2: External Authentication• NEW! External Authentication Services (OAuth\OpenID\Social
Media)
– Microsoft (Windows Live ID Account)
• Riduzione tempi di sviluppo nuove applicazioni
– Perché re-inventare la ruota ogni volta ?
– Gli utenti non devono creare l’ennesimo account
@Web API 2: External Authentication
@Web API 2: External Authentication
@Web API 2: External Authentication• Toolbox
– Visual Studio 2013
– Google User Account
– Developer Account
• Microsoft Live ID, http://go.microsoft.com/fwlink/?LinkID=144070
• Twitter, https://dev.twitter.com/
• Facebook, https://developers.facebook.com/
@ASP.NET Web API 2
DEMOExternal Authentication
@Web API 2: OData
• Aggiunte le opzioni $expand, $select e $value
– $expand, permette di ottenere nella stessa Response i dati di entità collegate
– $select, permette di includere in una Response un sottoinsieme di valori di
una o piu’ proprietà di una specifica entità
– $value, permette di ottenere il valore Raw di una specifica proprietà di
un’entità
@Web API 2: OData
• Requirements dei controllers per supportare $select e $expand
– Per azioni che restituiscono collezioni
• IQueryable
– Per azioni che restituiscono singole entità
• SingleResult<T>, dove «T» è IQueryable (card. 0..1)
– Decorare il metodo con [Queryable]
Oppure
– EnableQuerySupport in HttpConfiguration
@ASP.NET Web API 2
DEMOOData
@Riferimenti
• Visual Studio 2013
– http://www.asp.net/vnext
• ASP.NET Web API 2
– http://www.asp.net/vnext/overview/aspnet-web-api
• OWIN & Katana
– http://www.asp.net/vnext/overview/owin-and-katana
@Grazie agli sponsor
@http://tinyurl.com/VS2013Feed
Per voi sono solo 10 minuti persi, per noi è utilissimo per poter crescere e migliorare!