26
@ @ ASP.NET Web API 2 Pietro Libro http://blogs.ugidotnet.org/ PietroLibroBlog [email protected] http://www.linkedin.com/in/pietrolibro

Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

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

Page 1: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@@ASP.NET Web API 2

Pietro Librohttp://blogs.ugidotnet.org/PietroLibroBlog

[email protected]

http://www.linkedin.com/in/pietrolibro

Page 2: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 3: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 4: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 5: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 6: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@Web API 2: Attribute Routing

• «Attivare» Attribute Routing

– MapHttpAttributeRoutes() in WebApiConfig

– Uso dell’attributo Route

– Uso dell’attributo RoutePrefix

Page 7: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@ASP.NET Web API 2

DEMOAttribute Routing

Page 8: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 9: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@ASP.NET Web API 2

DEMOBatch

Page 10: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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»

Page 11: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 12: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@ASP.NET Web API 2

DEMOIHttpActionResult

Page 13: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 14: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 15: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@ASP.NET Web API 2

DEMOCross-Origin Requests (CORS)

Page 16: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@Web API 2: External Authentication• NEW! External Authentication Services (OAuth\OpenID\Social

Media)

– Microsoft (Windows Live ID Account)

– Twitter

– Facebook

– Google

• Riduzione tempi di sviluppo nuove applicazioni

– Perché re-inventare la ruota ogni volta ?

– Gli utenti non devono creare l’ennesimo account

Page 17: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@Web API 2: External Authentication

Page 18: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@Web API 2: External Authentication

Page 19: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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/

Page 20: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@ASP.NET Web API 2

DEMOExternal Authentication

Page 21: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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à

Page 22: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 23: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@ASP.NET Web API 2

DEMOOData

Page 24: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@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

Page 25: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@Grazie agli sponsor

Page 26: Visual Studio 2013 - A New kind In Town - ASP.NET Web Api 2

@http://tinyurl.com/VS2013Feed

Per voi sono solo 10 minuti persi, per noi è utilissimo per poter crescere e migliorare!