Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Uma Introdução a ASP.NET Web API

3,573 views

Published on

Apresentação do Pedro Félix sobre ASP .NET Web API na 27a Reunião Presencial da Comunidade NetPonto em Lisboa (http://netponto.org).

Published in: Technology
  • Be the first to comment

Uma Introdução a ASP.NET Web API

  1. 1. 27ª Reunião Lisboa - 24/03/2012 http://netponto.org Uma Introdução à ASP.NET Web API Pedro Félix
  2. 2. Patrocinador "GOLD"
  3. 3. Pedro FélixProfessor no ISEL e membro do CCISELDocente no PROMPT - http://prompt.cc.isel.ipl.pt/ Programa Avançado em Métodos de Programação e TecnologiaConsultor independente Rupeal SAPO – Service Delivery BrokerMembro do Web API Advisory Board
  4. 4. Sumário• Enquadramento e objectivos• Modelo de programação• Arquitectura de processamento• Extensibilidade
  5. 5. ASP.NET Web API• Application Programming Interfaces• Expostas na Web• Usando o HTTP como protocolo aplicacional• Accessíveis por variados tipos de cliente – E.g. dispositivos móveis
  6. 6. ASP.NET Web API Fonte: http://blog.programmableweb.com/2012/02/06/5000-apis-facebook-google-and-twitter-are-changing-the-web/
  7. 7. ASP.NET Web API Fonte: http://www.hanselman.com/blog/VisualStudio11BetaInContext.aspx
  8. 8. ASP.NET Web API: Evolução• 2010 – WCF Web API - Extensão ao WCF – Preview 6 – Modelo de classes para o HTTP• Feveiro de 2012 – ASP.NET Web Api Beta – Modelo baseado em controladores – Modelo de classes para o HTTP – Próximos milestones: RC, RTM
  9. 9. Bases arquitecturais da Web• Identificação – URI http://netponto.org/reuniao/27a-reuniao-presencial-da-comunidade-netponto-em-lisboa/• Interacção – HTTP, ...• Representações e formatos – text/html, application/xml, application/json, imag e/png, audio/mpeg, application/atom+xml, …
  10. 10. Modelo de Programação
  11. 11. Distribuição - pacotes NuGet
  12. 12. Dependências System.Json System.Net.Http.* System.Web.Http.*
  13. 13. Modelo de programaçãoHttpConfiguration e HttpRoutevar config = new HttpSelfHostConfiguration("http://localhost:8080");config.Routes.MapHttpRoute( "default", "{controller}/{id}", new {controller = "home", id = RouteParameter.Optional});HttpServer, HttpSelfHostServer, ...var server = new HttpSelfHostServer(config);server.OpenAsync().Wait();
  14. 14. Modelo de programaçãoApiController e actionspublic class HomeController : ApiController { public HttpResponseMessage Get() { ... }}
  15. 15. Modelo de programação• Controller representa uma família de recursos• Actions estão associadas a métodos HTTP – Get() - GET sobre /resource – Get(int id) - GET sobre /resource/123 – Post(...) - POST sobre /resource/• No MVC, as actions estão associadas a subconjuntos de recursos – Detail(int id) – GET sobre /resource/detail/123 – Delete(int id) – POST sobre /resource/delete/123
  16. 16. Modelo de programaçãoApiControllerpublic abstract class ApiController : IHttpController, IDisposable{ public HttpConfiguration Configuration { get; set; } public HttpRequestMessage Request { get; set; } public UrlHelper Url { get; } ...}public interface IHttpController{ Task<HttpResponseMessage> ExecuteAsync( HttpControllerContext controllerContext, CancellationToken cancellationToken);}
  17. 17. Modelo de programaçãoHttpRequestMessage e HttpResponseMessagevar userAgent = Request.Headers.UserAgent.Count != 0 ? Request.Headers.UserAgent.First().Product.Name : "stranger";return new HttpResponseMessage() { Content = new StringContent("Hello there, "+userAgent) };
  18. 18. Modelo de programação• HttpConfiguration – HttpRouteCollection• HttpServer – HttpSelfHostServer, ...• ApiController – Acções associadas a métodos HTTP (GET, POST, PUT, DELETE, ...)• HttpRequestMessage e HttpResponseMessage
  19. 19. HTTP: modelo de classes
  20. 20. Handler: Request  Response
  21. 21. Handler PipelineHttpRequestMessage InnerHander DelegatingHandler HttpMessageHandlerHttpResponseMessage
  22. 22. Handler Pipeline Handler Handler Handler Handler
  23. 23. HttpClientCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  24. 24. HttpClient
  25. 25. HttpClient e handlers
  26. 26. HttpClient e handlers InnerHander DelegatingHandler HttpClient HttpClientHandler (e.g. Caching)
  27. 27. Arquitectura de processamento
  28. 28. Web/ASP.NET Hosting
  29. 29. ASP.NET Web HostingCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  30. 30. Self-hosting
  31. 31. Memory hostingvar config = new HttpConfiguration();config.Routes.MapHttpRoute( "default", "{controller}/{id}", new { controller = "home", id = RouteParameter.Optional });var server = new HttpServer(config);var client = new HttpClient(server);var resp = client .GetAsync("http://does.not.matter/hello") .Result;
  32. 32. Media type formattingmedia-type CLR Type Stream
  33. 33. Media Type FormatterCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  34. 34. Arquitectura de processamento
  35. 35. Handler Pipeline Handler Handler Handler Handler
  36. 36. Message HandlerCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  37. 37. Arquitectura de processamento
  38. 38. Controller FactoryCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  39. 39. Filtros
  40. 40. WCF e ASP.NET Web API• WCF – Baseado nos modelos do SOAP e do WSDL – Independência do transporte – HTTP é uma opção – HTTP é apenas uma opção de transporte• ASP.NET Web API programming model – Baseado no modelo da Web (URIs, HTTP, formatos) – HTTP usado como protocolo aplicacional
  41. 41. MVC e Web API• MVC – Ênfase na produção de HTML – Modelo antigo de classes para o HTTP – HttpContext – Actions• Web API – Independência do formato – Novo modelo de classes para o HTTP – Métodos HTTP (GET, POST, PUT, ...)• Não existe razão para a diferença!
  42. 42. Notas finais• Relevância actual das Web API• HTTP como protocolo aplicacional• Múltiplos formatos – HTML é apenas mais um• Modelo de classes para o HTTP no .NET 4.5 – Cliente e servidor – Pedidos e respostas, handling, formatters• Modelo no servidor baseado em controllers
  43. 43. E o ReST? Representational State Transfer
  44. 44. ReferênciasPedro Félix’s shared memory – http://pfelix.wordpress.com/Código fonte – https://github.com/pmhsfelix/presentation-netponto-webapi – https://github.com/pmhsfelix/WebApi.Explorations.ServiceBusRelayHostGitHub WebApiContrib – https://github.com/webapicontribGetting Started with ASP.NET Web API – http://www.asp.net/web-api
  45. 45. Questões?
  46. 46. Próximas reuniões presenciais• 24/03/2012 – Março• 14/04/2012 – Abril (Porto)• 21/04/2012 – Abril• 26/05/2012 – MaioReserva estes dias na agenda! :)
  47. 47. Patrocinador "GOLD"
  48. 48. Obrigado!Pedro Félixpmhsfelix@gmail.comhttp://pfelix.wordpress.comhttp://twitter.com/pmhsfelixhttp://github.com/pmhsfelixhttp://prompt.cc.isel.ipl.pt/

×