IntroducciónaASP.NET Web APIRodolfo FinochiettiMVP ASP.NET/IISLagash Systemsrodolfof@lagash.com@rodolfof
Social Software Development
Web API GrowthSource: www.programmableweb.com – current APIs: 4535+ 100% + 50% + 3400% + 235% + 71% + 86% + 46% + 63%
Embrace HTTP¿Por que no WS-*?
Representational state transfer (REST)• REST (representational state transfer) es un estilo dearquitectura de software par...
Premisas• Client–server• Stateless• Cacheable• Layered system• Uniform Interface
¿Que es una Web API?
Arquitectura HTTPhttp://www.w3.org/TR/webarch
¿Cómo funciona HTTP?
Métodos HTTP
Requerimientos de un framework paraconstruir Web API’s
Alternativas para crear Web API’s
Alternativas para crear Web API’s
Características de ASP.NET Web API• De ASP.NET MVC• Link generation• Testability• IoC integration• VS template• Scaffoldin...
Para implementar Web API . . .• Derivar ApiController• Implementar las acciones– Las acciones mapean a métodos HTTP– Prefi...
Ruta default en Web API• routes.MapHttpRoute(– name: "DefaultApi",– routeTemplate: "api/{controller}/{id}",– defaults: new...
DemoWeb API
Media Types• Determinan los formatos que entre cliente yservidor• Request:• Response:
Media Types Formatters• En Web API los Media Types determinan comose serializan y deserializan el HTTP Body• Para crear un...
Content Negotiation• HTTP specification (RFC 2616) lo define como“the process of selecting the bestrepresentation for a gi...
Content Negotiation• El HTTP Dispatcher llama a la implementación deIContentNegociator– Este objeto es el encargado de det...
DemoMedia Types FormattersContent Negotiation
Validation• La validación se corre en el modelo en cadaRequest– Igual que en ASP.NET MVC• Los errores de validación se acu...
OData queries• Soporte para sintaxis de OData URL query– $top, $skip, $orderby, $filter• Se habilita con el atributo [Quer...
Web API Description• Se puede usar IApiExplorer para obtener unadescripción de las Web API en runtime• Útil para construir...
IApiExplorerIApiExplorer apiExplorer =config.Services.GetApiExplorer();public interface IApiExplorer{Collection<ApiDescrip...
DemoValidationWeb Api DescriptionOData Queries
Haciendo llamadas asincrónicas fácilmenteTask<string> Op123Async(string s) {var tcs = new TaskCompletionSource<string>();v...
Asynchronous Support• Porque async en el server?– Porque nos permite usar de manera mas eficiente los recurso delServer• Y...
Async tradicional en MVCpublic class Products : AsyncController {public void IndexAsync() {WebClient wc1 = new WebClient()...
Async en MVC con .NET 4.5public class Products : Controller {public async Task<ActionResult> IndexAsync() {WebClient web =...
DemoSoporte Asincrónico
Contacto• Mail:– rodolfof@lagash.com• Blogs:– http://shockbyte.net• Twitter:– @rodolfof
¡Gracias!
Introducción a ASP.NET Web API
Upcoming SlideShare
Loading in …5
×

Introducción a ASP.NET Web API

5,388 views

Published on

Introducción a ASP.NET Web API

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,388
On SlideShare
0
From Embeds
0
Number of Embeds
4,256
Actions
Shares
0
Downloads
26
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Use HTTP as an Application Protocol – not a Transport Protocol
  • Introducción a ASP.NET Web API

    1. 1. IntroducciónaASP.NET Web APIRodolfo FinochiettiMVP ASP.NET/IISLagash Systemsrodolfof@lagash.com@rodolfof
    2. 2. Social Software Development
    3. 3. Web API GrowthSource: www.programmableweb.com – current APIs: 4535+ 100% + 50% + 3400% + 235% + 71% + 86% + 46% + 63%
    4. 4. Embrace HTTP¿Por que no WS-*?
    5. 5. Representational state transfer (REST)• REST (representational state transfer) es un estilo dearquitectura de software para el intercambio decontenido en ambientes Web• Fue introducido en el año 2000 por Roy Fielding, unode los autores de HTTP– “Architectural Styles and the Design of Network-basedSoftware Architectures”• En general el termino es utilizado para describircualquier interfaz simple que sirva para transmitirinformación sobre HTTP sin una capa de mensajeríaadicional como SOAP, XML-RPC, Session tracking oHTTP Cookies
    6. 6. Premisas• Client–server• Stateless• Cacheable• Layered system• Uniform Interface
    7. 7. ¿Que es una Web API?
    8. 8. Arquitectura HTTPhttp://www.w3.org/TR/webarch
    9. 9. ¿Cómo funciona HTTP?
    10. 10. Métodos HTTP
    11. 11. Requerimientos de un framework paraconstruir Web API’s
    12. 12. Alternativas para crear Web API’s
    13. 13. Alternativas para crear Web API’s
    14. 14. Características de ASP.NET Web API• De ASP.NET MVC• Link generation• Testability• IoC integration• VS template• Scaffolding• De WCF Web API• Server-side query composition• Create custom help pages• Self-host• Tracing
    15. 15. Para implementar Web API . . .• Derivar ApiController• Implementar las acciones– Las acciones mapean a métodos HTTP– Prefijar los nombres de los métodos como el verbo HTTP deseado –PostComment– Usar [Get/Post/Put/Delete] si se prefiere un nombre diferente
    16. 16. Ruta default en Web API• routes.MapHttpRoute(– name: "DefaultApi",– routeTemplate: "api/{controller}/{id}",– defaults: new { id = RouteParameter.Optional }– );
    17. 17. DemoWeb API
    18. 18. Media Types• Determinan los formatos que entre cliente yservidor• Request:• Response:
    19. 19. Media Types Formatters• En Web API los Media Types determinan comose serializan y deserializan el HTTP Body• Para crear un media formatter se debe derivarde:– MediaTypeFormatter: Asincrónico– BufferedMediaTypeFormatter: Sincrónico
    20. 20. Content Negotiation• HTTP specification (RFC 2616) lo define como“the process of selecting the bestrepresentation for a given response whenthere are multiple representations available.”• Utilizando– Accept:– Accept-Charset– Accept-Encoding– Accept-Language
    21. 21. Content Negotiation• El HTTP Dispatcher llama a la implementación deIContentNegociator– Este objeto es el encargado de determinar la mejorrepresentación posible• Se llama al método Negotiate– Type del objeto a serializar– Colección de media formatters– HTTP Request• Devuelve el formatter a usar y el media type– Si no se encuentra ningún formatter valido devuelvenull, y el cliente recibe un error HTTP 406
    22. 22. DemoMedia Types FormattersContent Negotiation
    23. 23. Validation• La validación se corre en el modelo en cadaRequest– Igual que en ASP.NET MVC• Los errores de validación se acumulan en elModelState• Se chequean con ModelState.IsValid• Se pueden utilizar DataAnnotations o lógicacustom de validación
    24. 24. OData queries• Soporte para sintaxis de OData URL query– $top, $skip, $orderby, $filter• Se habilita con el atributo [Queryable] yretornando IQueryable<T> desde la acción
    25. 25. Web API Description• Se puede usar IApiExplorer para obtener unadescripción de las Web API en runtime• Útil para construir paginas de ayuda, clientesde test, y herramientas
    26. 26. IApiExplorerIApiExplorer apiExplorer =config.Services.GetApiExplorer();public interface IApiExplorer{Collection<ApiDescription> ApiDescriptions {get; }}
    27. 27. DemoValidationWeb Api DescriptionOData Queries
    28. 28. Haciendo llamadas asincrónicas fácilmenteTask<string> Op123Async(string s) {var tcs = new TaskCompletionSource<string>();var state = 0;Action resume = delegate {switch (state) {case 0: Task<string> t1 = Op1Async(s);state = 1; t1.ContinueWith(resume);break;case 1: Task<string> t2 = Op2Async(t1.Result);...}async Task<string> Op123Async(string s) {string s1 = await Op1Async(s);string s2 = await Op2Async(s1);string s3 = await Op3Async(s2);return s3;}
    29. 29. Asynchronous Support• Porque async en el server?– Porque nos permite usar de manera mas eficiente los recurso delServer• Y como funciona?– Al momento de invocar a un resource remoto, el controller le cede elcontrol permitiendole reutilizar el thread mientras espera larespuesta.– Cuando la llamada remota se completa, el controller es re-scheduleado para completar su ejecución.– Menor # de threads corriendo -> aumenta la escalabilidad• El uso de async en el servicio no se expone a browsers/clientes– http://myserver.com/products -> la misma URL puede serimplementada en ASP.NET usando un controller sincrónico oasincronico.
    30. 30. Async tradicional en MVCpublic class Products : AsyncController {public void IndexAsync() {WebClient wc1 = new WebClient();AsyncManager.OutstandingOperations.Increment();wc1.DownloadStringCompleted += (sender, e) => {AsyncManager.Parameters[“result"] = e.Result;AsyncManager.OutstandingOperations.Decrement();};wc1.DownloadStringAsync(new Uri("http://www.bing.com/"));}public ActionResult IndexCompleted(string result) {return View();}}
    31. 31. Async en MVC con .NET 4.5public class Products : Controller {public async Task<ActionResult> IndexAsync() {WebClient web = new WebClient();string result = await web.DownloadStringTaskAsync("www.bing.com/");return View();}}
    32. 32. DemoSoporte Asincrónico
    33. 33. Contacto• Mail:– rodolfof@lagash.com• Blogs:– http://shockbyte.net• Twitter:– @rodolfof
    34. 34. ¡Gracias!

    ×