140 likes | 315 Vues
Overview do ASP.NET Web API. MVC Summit 2012. Israel Aece http://www.israelaece.com ia@israelaece.com. Situação Atual Estrutura da API Infraestrutura Interceptadores Formatos Injeção de Dependências Testes Processamento Assíncrono Consumo Outros. Agenda. WCF
E N D
Overview doASP.NET Web API MVC Summit 2012 Israel Aece http://www.israelaece.com ia@israelaece.com
SituaçãoAtual • Estrutura da API • Infraestrutura • Interceptadores • Formatos • Injeção de Dependências • Testes • ProcessamentoAssíncrono • Consumo • Outros Agenda ASP.NET Web API - MVC Summit 2012
WCF • Parte do .NET Framework • Construção de Serviços SOAP • Suportepara REST • WCF Web API • Tecnologiaparaconstrução de APIs REST • Descontinuada • Incorporadapelo ASP.NET • ASP.NET Web API • Parte do ASP.NET MVC 4 • Emversão Beta (com Go-Live) • Desvinculada do .NET Framework • Plataforma Web da Microsoft • Via NuGet Situaçãoatual ASP.NET Web API - MVC Summit 2012
Semelhante a construção de controllers do MVC • ApiController • Classe base paraqualquer API • Sufixada com “Controller” • Actions • Métodosquetratam as requisições • Parâmetros simples oucomplexos • HttpRequestMessage/<T> • HttpResponseMessage/<T> • HttpPost, HttpGet, HttpPut e HttpDelete Estrutura da api 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
Divididoemtrêscamadas • Hosting • WebHost • Self-Host • Message Handler Pipeline • Controller Handling • + Info: http://tinyurl.com/webapi-pa • Configuração • Baseadoemrotas • MapHttpRoute infraestrutura Controller GetXXX PostXXX ApiController Controller Dispatcher HttpServer Message Handler Message Handler using System.Web.Http; routes.MapHttpRoute( name: "ActionApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); WebHost SelfHost ASP.NET Web API - MVC Summit 2012
Message Handlers • Rodam antes do model binding • Similar aoschannels do WCF • Lidam com as classes HttpRequestMessage e HttpResponseMessage • A mesmainstância é utilizadaportodas as operações da API • DelegatingHandler • Russian-dolls • Action Filters • Rodamdepois do model binding • Similar aosinspectors do WCF • Próximoaoquejáexiste no MVC • Aplicadoemváriaspartes • Açõesespecíficasou controllers inteiros interceptadores Cliente Controller MH1 HCD MH4 MH2 MH3 HCH HS Internet HCH: HttpClientHandler HS: HttpServer HCD: HttpControllerDispatcher ASP.NET Web API - MVC Summit 2012
Identifica o formato do corpo da mensagem • Tanto a requisiçãoquanto a resposta • AlgunsFormatos • application/json • application/xml • application/x-www-form-urlencoded • text/html • image/png • Headers • Content-Type • Identifica o formato do corpoda mensagem • Accept • Indicaemqueformato o clientedeseja a resposta • Media Type Mappings • Estensível via MediaTypeFormatter Formatos ASP.NET Web API - MVC Summit 2012
Próximoaoquejáexiste no MVC • Utilizadopelainfraestrutura • Podeserutilizadoparaextrairrecursospróprios • Também é estensível • Permiteplugar um container de DI • IDependencyResolver Injeção dedependências ASP.NET Web API - MVC Summit 2012
Semobjetosestáticos • WebOperationContext.Current • WCFMock • Parâmetrospodemserfornecidosatravés do construtor • Emruntime, podemosrecorreraoDependencyResolver • Manipulaçãodireta via HttpRequestMessage e HttpResponseMessage • Estão “desconectadas” da infraestrutura • In-memory hosting parafacilitaros testes • Semqualqueruso da rede testes ASP.NET Web API - MVC Summit 2012
Fazuso dos recursosincorporadosnalinguagem • A implementação é mais simples • IAsyncResults, Callbacks, Begin/End, etc. • No servidor • Melhorutilização dos recursos, escalabilidade • No cliente • Permiteumaaplicaçãomaisinterativa Processamentoassíncrono public class NoticiasRegionaisController : ApiController { public async Task<IEnumerable<Noticia>> Get(string cidade) { using (var client = new HttpClient()) return await (awaitclient.GetAsync(“http://outroServidor/noticias/” + cidade)) .Content .ReadAsync<IEnumerable<Noticia>>(); }} ASP.NET Web API - MVC Summit 2012
Porqualquertecnologia • Sem WSDL • Acessoao(s) recurso(s) • Sem a necessidade de ferramental • Em .NET (System.Net) • HttpWebRequest/HttpWebResponse • WebClient • HttpClient • Flexibilidade • Com váriosfacilitadorespara o consumo de APIs REST. consumo ASP.NET Web API - MVC Summit 2012
Consultas • IQueryable<T> • Autenticação • OAuth • Basic • JsonLogin Outros ASP.NET Web API - MVC Summit 2012
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 Referências ASP.NET Web API - MVC Summit 2012
Overview doASP.NET Web API MVC Summit 2012 Israel Aece http://www.israelaece.com ia@israelaece.com