Tag Archives: mvc

Http Modules e Http Handlers

Resolvi escrever este post para explicar o que são os tão conhecidos porém as vezes não entendidos Http Modules e Http Handlers, estes dois players na infraestrutura do ASP.NET fazem basicamente tudo acontecer.

Todo o funcionamento do ASP.NET é baseado nestes dois conceitos que aprenderemos a partir de agora.

ASP.NET Pipeline

Todas as requisições feitas para uma aplicação ASP.NET são tratadas através de um pipeline, este pipeline possui uma série de eventos de entrada que leva a tal requisição a um manipulador, este manipulador é o que chamamos de Http Handler (os Http Handlers também são conhecidos como Endpoints – você já entenderá o porque). Depois da requisição ser tratada por um Http Handler ela será liberada ao solicitante e dessa vez passará pelos eventos de saída do pipeline.

ASP.NET Pipeline

ASP.NET Pipeline

Perceba que na imagem o processo lembra muito um túnel (pipeline) onde a requisição passa por eventos de entrada, é tratada por um http handler e depois passa por eventos de saída até ser liberada ao solicitante da requisição.

É importante lembrar que todas as requisições passam por este eventos do pipeline (definidos por HttpApplication) .

Http Handlers

Os Http Handlers são de fato os componentes que fazem “a coisa acontecer”, são eles que processam as requisições (ProcessRequest definido por IHttpHandler). No Web Forms por exemplo o HttpHandler que processa as requisições é o PageHandlerFactory que implementa a interface IHttpHandler, já no MVC esse papel é feito pelos handlers MvcHandler e MvcHttpHandler (dependendo da situação).

É comum nós termos que criar nossos próprios Http Handlers em algumas situacões como por exemplo um handler de imagens que possui os binários no banco de dados e ainda talvez tenham que variar os tamanhos dessas imagens. Outro exemplo seria criar um handler para prover informações em formato RSS ou CSV.

Implementar um handler não é uma tarefa muito difícil só é preciso implementar a interface IHttpHandler (Basta dar uma googlada para ver 1 bilhão de exemplos =D).

Http Modules

Diferente dos Http Handlers que atuam como endpoints para as requisições os Http Modules atuam nos mais variados eventos do pipeline do ASP.NET, na verdade um Http Module (quando escrito) se inscreve em um ou mais eventos do pipeline onde pode fazer diferentes coisas (olhar imagem do pipeline acima e link do HttpApplication), dessa forma dizemos que os Modules atuam como “filtros” em todo esse processo (tanto nos eventos de entrada como nos eventos de saída do pipeline).

Você pode querer criar um Http Module para por exemplo minimificar arquivos estáticos, colocar alguns headers http customizados na resposta da requisição ou ainda tratar questões de segurança e logging que são tarefas que normalmente um Http Module resolve muito bem.

Assim como os Handlers os Modules não são coisas de outro mundo para serem implementados e você pode achar milhares de exemplos facilmente no Google.

Resumindo

Os Http Handles e os Http Modules são parte fundamental do ASP.NET entendê-los faz de você um melhor desenvolvedor sem dúvidas, e acredite quando der zica saber bem como funciona o framework com o qual você trabalha faz toda a diferença.

Espero que este post tenha ajudado de alguma forma…

Qualquer dúvida, crítica ou sugestão por favor vamos bater um papo nos comentários.

Abraços!

MVC

Debugando Rotas no ASP.NET MVC

Quem trabalha com ASP.NET MVC sabe o quanto as rotas são importantes para o correto funcionamento das aplicações, as rotas tem um papel fundamental e são delas que o Framework extrai informações para construção de Controllers e para o acionamento de Actions.

Mas e quando temos problemas com as rotas? O sistema deveria estar caindo em uma rota e não na outra, como verificar isso? Na verdade é meio complicado mesmo uma vez que as rotas são todas configuradas na inicialização da aplicação (AKA Application_Start do nosso querido Global.asax).

Pensando nessa dificuldade de cada dia o Phil Haack criou um package chamado RouteDebugger que tem o objetivo de nos ajudar a caçar possíveis problemas em nossas rotas.

Mão na massa!

Criei um projeto chamado MvcRouteDebugger no meu Visual Studio 2010

 

 

 

 

 

Com o projeto recém criado abra o Package Manager Console e instale o pacote como abaixo:

PM > Install-Package routedebugger

 

 

 

 

A instalação adiciona uma referência da Dll RouteDebugger ao projeto e uma entrada no Web.Config

 

 

 

 

 

 

A entrada no Web.Config é que define se o debug esta valendo ou não, então é aqui que você pode ativar ou desativar o RouteDebugger em sua aplicação:

<add key=”RouteDebugger:Enabled” value=”true” />

Por padrão vem ativo (true).

Executando a aplicação

 

 

 

 

 

 

Com a aplicação rodando podemos ver que quando a aplicação esta com o RouteDebugger ativo são adicionadas várias informações sobre roteamento no fim das nossas páginas, dessa forma conseguiremos de uma forma melhor analisar possíveis problemas com nossas rotas.

Espero que tenham gostado da dica.

Abraços.

Como trabalhar com AJAX, JSON e Cache no ASP.NET MVC

Hoje tive o prazer de participar de um grande evento organizado pela comunidade inteiramente sobre ASP.NET MVC o MVC Summit, foram duas tracks com muito MVC pra galera e dessa vez eu pude falar sobre AJAX, JSON e CACHE.

Abaixo segue o ppt e o vídeo que gravei da palestra.

Espero que gostem

Abs

Vídeo da palestra:

MVC Summit – Como trabalhar com AJAX, JSON e Cache no MVC from Cleber Dantas on Vimeo.

Compilação de Views no ASP.NET MVC

Para não passar 2010 em branco sem nenhum vídeo técnico segue uma dica sobre ASP.NET MVC bem útil (eu acho ;D), espero que gostem!

Compilação de Views no ASP.NET MVC from Cleber Dantas on Vimeo.