ASP.NET Web API MVC Summit 2012

Download Report

Transcript ASP.NET Web API MVC Summit 2012

OVERVIEW DO
ASP.NET WEB API
MVC SUMMIT 2012
Israel Aece
http://www.israelaece.com
[email protected]
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 NuGet
ASP.NET Web API - MVC Summit 2012
ESTRUTURA DA API
• Semelhante a construção de controllers do MVC
• ApiController
– Classe base para qualquer API
– Sufixada com “Controller”
• Actions
– Métodos que tratam as requisições
– Parâmetros simples ou complexos
– HttpRequestMessage/<T>
– HttpResponseMessage/<T>
– HttpPost, HttpGet, HttpPut e HttpDelete
public class ExemploController : ApiController
{
public string Get(string value) { }
public HttpResponseMessage Get(HttpRequestMessage request) { }
public HttpResponseMessage<Protocolo> Post(Pedido request) { }
[HttpGet]
public IEnumerable<Cliente> RecuperarClientes() { }
}
ASP.NET Web API - MVC Summit 2012
INFRAESTRUTURA
Controller
GetXXX
PostXXX
HttpServer
ApiController
Controller Dispatcher
Message Handler
Message Handler
WebHost
SelfHost
• Dividido em três camadas
– Hosting
• WebHost
• Self-Host
– Message Handler Pipeline
– Controller Handling
– + Info: http://tinyurl.com/webapi-pa
• Configuração
– Baseado em rotas
– MapHttpRoute
using System.Web.Http;
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
ASP.NET Web API - MVC Summit 2012
INTERCEPTADORES
Cliente
Controller
MH1
HCD
MH4
MH2
MH3
HCH
HS
Internet
HCH: HttpClientHandler
HS: HttpServer
HCD: HttpControllerDispatcher
• Message Handlers
– Rodam antes do model binding
• Similar aos channels do WCF
– Lidam com as classes HttpRequestMessage e
HttpResponseMessage
– A mesma instância é utilizada por todas as
operações da API
– DelegatingHandler
• 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 MediaTypeFormatter
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
• IDependencyResolver
ASP.NET Web API - MVC Summit 2012
TESTES
• Sem objetos estáticos
– WebOperationContext.Current
• WCFMock
• Parâmetros podem ser fornecidos através do
construtor
– Em runtime, podemos recorrer ao
DependencyResolver
• Manipulação direta via HttpRequestMessage e
HttpResponseMessage
– 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
– IAsyncResults, Callbacks, Begin/End, etc.
• No servidor
– Melhor utilização dos recursos, escalabilidade
• No cliente
– Permite uma aplicação mais interativa
public class NoticiasRegionaisController : ApiController
{
public async Task<IEnumerable<Noticia>> Get(string cidade)
{
using (var client = new HttpClient())
return await
(await client.GetAsync(“http://outroServidor/noticias/” + cidade))
.Content
.ReadAsync<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)
– HttpWebRequest/HttpWebResponse
– WebClient
– HttpClient
• 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
– JsonLogin
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
[email protected]