Uma Introdução a ASP.NET Web API

3,445 views
3,303 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
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,445
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
45
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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/

×