OVERVIEW DO ASP NET WEB API MVC SUMMIT

OVERVIEW DO ASP. NET WEB API MVC SUMMIT 2012 Israel Aece http: //www. israelaece. com ia@israelaece. com

AGENDA • • • Situação Atual Estrutura da API Infraestrutura Interceptadores Formatos Injeção de Dependências Testes Processamento Assíncrono Consumo Outros ASP. NET Web API - MVC Summit 2012

SITUAÇÃO ATUAL • WCF – Parte do. NET Framework – Construção de Serviços SOAP – Suporte para REST • WCF Web API – Tecnologia para construção de APIs REST – Descontinuada – Incorporada pelo ASP. NET • ASP. NET Web API – Parte do ASP. NET MVC 4 – Em versão Beta (com Go-Live) – Desvinculada do. NET Framework – Plataforma Web da Microsoft – Via Nu. Get ASP. NET Web API - MVC Summit 2012

ESTRUTURA DA API • Semelhante a construção de controllers do MVC • Api. Controller – Classe base para qualquer API – Sufixada com “Controller” • Actions – Métodos que tratam as requisições – Parâmetros simples ou complexos – Http. Request. Message/<T> – Http. Response. Message/<T> – Http. Post, Http. Get, Http. Put e Http. Delete public class Exemplo. Controller : Api. Controller { public string Get(string value) { } public Http. Response. Message Get(Http. Request. Message request) { } public Http. Response. Message<Protocolo> Post(Pedido request) { } [Http. Get] public IEnumerable<Cliente> Recuperar. Clientes() { } } ASP. NET Web API - MVC Summit 2012

INFRAESTRUTURA Controller Get. XXX Post. XXX Http. Server Api. Controller Dispatcher Message Handler Web. Host Self. Host • Dividido em três camadas – Hosting • Web. Host • Self-Host – Message Handler Pipeline – Controller Handling – + Info: http: //tinyurl. com/webapi-pa • Configuração – Baseado em rotas – Map. Http. Route using System. Web. Http; routes. Map. Http. Route( name: "Action. Api", route. Template: "api/{controller}/{action}/{id}", defaults: new { id = Route. Parameter. Optional } ); ASP. NET Web API - MVC Summit 2012

INTERCEPTADORES Cliente Controller MH 1 HCD MH 4 MH 2 MH 3 HCH HS Internet HCH: Http. Client. Handler HS: Http. Server HCD: Http. Controller. Dispatcher • Message Handlers – Rodam antes do model binding • Similar aos channels do WCF – Lidam com as classes Http. Request. Message e Http. Response. Message – A mesma instância é utilizada por todas as operações da API – Delegating. Handler • Russian-dolls • Action Filters – Rodam depois do model binding • Similar aos inspectors do WCF – Próximo ao que já existe no MVC – Aplicado em várias partes • Ações específicas ou controllers inteiros ASP. NET Web API - MVC Summit 2012

FORMATOS • Identifica o formato do corpo da mensagem – Tanto a requisição quanto a resposta • Alguns Formatos – application/json – application/xml – application/x-www-form-urlencoded – text/html – image/png • Headers – Content-Type • Identifica o formato do corpo da mensagem – Accept • Indica em que formato o cliente deseja a resposta • Media Type Mappings • Estensível via Media. Type. Formatter ASP. NET Web API - MVC Summit 2012

INJEÇÃO DE DEPENDÊNCIAS Próximo ao que já existe no MVC Utilizado pela infraestrutura Pode ser utilizado para extrair recursos próprios Também é estensível – Permite plugar um container de DI • IDependency. Resolver • • ASP. NET Web API - MVC Summit 2012

TESTES • Sem objetos estáticos – Web. Operation. Context. Current • WCFMock • Parâmetros podem ser fornecidos através do construtor – Em runtime, podemos recorrer ao Dependency. Resolver • Manipulação direta via Http. Request. Message e Http. Response. Message – Estão “desconectadas” da infraestrutura – In-memory hosting para facilitar os testes • Sem qualquer uso da rede ASP. NET Web API - MVC Summit 2012

PROCESSAMENTO ASSÍNCRONO • Faz uso dos recursos incorporados na linguagem • A implementação é mais simples – IAsync. Results, Callbacks, Begin/End, etc. • No servidor – Melhor utilização dos recursos, escalabilidade • No cliente – Permite uma aplicação mais interativa public class Noticias. Regionais. Controller : Api. Controller { public async Task<IEnumerable<Noticia>> Get(string cidade) { using (var client = new Http. Client()) return await (await client. Get. Async(“http: //outro. Servidor/noticias/” + cidade)). Content. Read. Async<IEnumerable<Noticia>>(); } } ASP. NET Web API - MVC Summit 2012

CONSUMO • Por qualquer tecnologia – Sem WSDL – Acesso ao(s) recurso(s) – Sem a necessidade de ferramental • Em. NET (System. Net) – Http. Web. Request/Http. Web. Response – Web. Client – Http. Client • Flexibilidade • Com vários facilitadores para o consumo de APIs REST. ASP. NET Web API - MVC Summit 2012

OUTROS • Consultas – IQueryable<T> • Autenticação – OAuth – Basic – Json. Login ASP. NET Web API - MVC Summit 2012

REFERÊNCIAS • ASP. NET Web API – Site Oficial – http: //www. asp. net/web-api • Pedro Félix – http: //pfelix. wordpress. com/ • Carlos Figueira – http: //blogs. msdn. com/b/carlosfigueira/ • Pablo Cibraro – http: //weblogs. asp. net/cibrax/ • Pedro Reys – http: //pedroreys. com/ • Elemar Junior – http: //elemarjr. net/tag/rest/ • Meu Blog – http: //www. israelaece. com/? tag=/rest ASP. NET Web API - MVC Summit 2012

OVERVIEW DO ASP. NET WEB API MVC SUMMIT 2012 Israel Aece http: //www. israelaece. com ia@israelaece. com
- Slides: 14