Your SlideShare is downloading. ×
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Introducción a ASP.NET Web API
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introducción a ASP.NET Web API

4,820

Published on

Introducción a ASP.NET Web API

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
4,820
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
17
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Use HTTP as an Application Protocol – not a Transport Protocol
  • Transcript

    • 1. IntroducciónaASP.NET Web APIRodolfo FinochiettiMVP ASP.NET/IISLagash Systemsrodolfof@lagash.com@rodolfof
    • 2. Social Software Development
    • 3. Web API GrowthSource: www.programmableweb.com – current APIs: 4535+ 100% + 50% + 3400% + 235% + 71% + 86% + 46% + 63%
    • 4. Embrace HTTP¿Por que no WS-*?
    • 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. Premisas• Client–server• Stateless• Cacheable• Layered system• Uniform Interface
    • 7. ¿Que es una Web API?
    • 8. Arquitectura HTTPhttp://www.w3.org/TR/webarch
    • 9. ¿Cómo funciona HTTP?
    • 10. Métodos HTTP
    • 11. Requerimientos de un framework paraconstruir Web API’s
    • 12. Alternativas para crear Web API’s
    • 13. Alternativas para crear Web API’s
    • 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. 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. Ruta default en Web API• routes.MapHttpRoute(– name: "DefaultApi",– routeTemplate: "api/{controller}/{id}",– defaults: new { id = RouteParameter.Optional }– );
    • 17. DemoWeb API
    • 18. Media Types• Determinan los formatos que entre cliente yservidor• Request:• Response:
    • 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. 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. 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. DemoMedia Types FormattersContent Negotiation
    • 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. 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. 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. IApiExplorerIApiExplorer apiExplorer =config.Services.GetApiExplorer();public interface IApiExplorer{Collection<ApiDescription> ApiDescriptions {get; }}
    • 27. DemoValidationWeb Api DescriptionOData Queries
    • 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. 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. 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. 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. DemoSoporte Asincrónico
    • 33. Contacto• Mail:– rodolfof@lagash.com• Blogs:– http://shockbyte.net• Twitter:– @rodolfof
    • 34. ¡Gracias!

    ×