Your SlideShare is downloading. ×
0
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Uma Introdução 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

Uma Introdução a ASP.NET Web API

3,193

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).

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,193
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
44
Comments
0
Likes
1
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

Transcript

  • 1. 27ª Reunião Lisboa - 24/03/2012 http://netponto.org Uma Introdução à ASP.NET Web API Pedro Félix
  • 2. Patrocinador "GOLD"
  • 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. Sumário• Enquadramento e objectivos• Modelo de programação• Arquitectura de processamento• Extensibilidade
  • 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. ASP.NET Web API Fonte: http://blog.programmableweb.com/2012/02/06/5000-apis-facebook-google-and-twitter-are-changing-the-web/
  • 7. ASP.NET Web API Fonte: http://www.hanselman.com/blog/VisualStudio11BetaInContext.aspx
  • 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. 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. Modelo de Programação
  • 11. Distribuição - pacotes NuGet
  • 12. Dependências System.Json System.Net.Http.* System.Web.Http.*
  • 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. Modelo de programaçãoApiController e actionspublic class HomeController : ApiController { public HttpResponseMessage Get() { ... }}
  • 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. 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. 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. Modelo de programação• HttpConfiguration – HttpRouteCollection• HttpServer – HttpSelfHostServer, ...• ApiController – Acções associadas a métodos HTTP (GET, POST, PUT, DELETE, ...)• HttpRequestMessage e HttpResponseMessage
  • 19. HTTP: modelo de classes
  • 20. Handler: Request  Response
  • 21. Handler PipelineHttpRequestMessage InnerHander DelegatingHandler HttpMessageHandlerHttpResponseMessage
  • 22. Handler Pipeline Handler Handler Handler Handler
  • 23. HttpClientCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  • 24. HttpClient
  • 25. HttpClient e handlers
  • 26. HttpClient e handlers InnerHander DelegatingHandler HttpClient HttpClientHandler (e.g. Caching)
  • 27. Arquitectura de processamento
  • 28. Web/ASP.NET Hosting
  • 29. ASP.NET Web HostingCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  • 30. Self-hosting
  • 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. Media type formattingmedia-type CLR Type Stream
  • 33. Media Type FormatterCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  • 34. Arquitectura de processamento
  • 35. Handler Pipeline Handler Handler Handler Handler
  • 36. Message HandlerCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  • 37. Arquitectura de processamento
  • 38. Controller FactoryCódigo-fonte disponível em:https://github.com/pmhsfelix/presentation-netponto-webapi
  • 39. Filtros
  • 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. 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. 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. E o ReST? Representational State Transfer
  • 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. Questões?
  • 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. Patrocinador "GOLD"
  • 48. Obrigado!Pedro Félixpmhsfelix@gmail.comhttp://pfelix.wordpress.comhttp://twitter.com/pmhsfelixhttp://github.com/pmhsfelixhttp://prompt.cc.isel.ipl.pt/

×