Alguém pode explicar em menos de 2 frases a diferença entre ambos? Sim, eu sei que o Google pode fornecer centenas de respostas, mas nenhuma em duas frases claras :)
Alguém pode explicar em menos de 2 frases a diferença entre ambos? Sim, eu sei que o Google pode fornecer centenas de respostas, mas nenhuma em duas frases claras :)
Respostas:
HttpHandler é o destino do trem de solicitação. HttpModule é uma estação ao longo do caminho.
As duas frases:
Um HttpModule será executado para todas as solicitações do seu aplicativo, independentemente da extensão, e geralmente é usado para itens como segurança, estatísticas, registro etc.
Um HttpHandler geralmente é associado a uma extensão específica e é usado para itens como feeds RSS, geração ou modificação dinâmica de imagens e similares.
Um pouco mais de explicação, se isso não estiver totalmente claro:
A maneira como penso sobre eles - os módulos "se conectam" ao pipeline de solicitação, enquanto os manipuladores "manipulam" uma extensão de arquivo específica. Portanto, se você possui um site com um LoggingModule e um PdfHandler, ambos executam uma solicitação para http://example.com/sample.pdf , e o módulo de log sozinho executa uma solicitação para http: // example.com/page.aspx .
Há um artigo bastante claro sobre a diferença no MSDN: Visão geral sobre manipuladores HTTP e módulos HTTP
ProcessRequest
. O módulo, por outro lado, será executado em qualquer ponto do ciclo de vida em que você o conectar. Para o seu cenário de querer executar algo anterior à página aspx, você deseja um módulo. No entanto você precisa para filtrar manualmente os pedidos de páginas que não são aspx
O objetivo principal e comum do HttpHandler e HttpModule é injetar lógica de pré-processamento antes que a solicitação do ASP.NET atinja o servidor IIS.
O ASP.NET fornece duas maneiras de injetar lógica no pipeline de solicitação;
exemplo: feeds RSS: para criar um feed RSS para um site, você pode criar um manipulador que emita XML no formato RSS. Portanto, quando os usuários enviam uma solicitação ao seu site que termina em .rss, o ASP.NET chama seu manipulador para processar a solicitação.
Há três etapas envolvidas na criação do manipulador 1. Implemente a interface IHttpHandler. 2. Registre o manipulador no arquivo web.config ou machine.config. 3. Mapeie a extensão do arquivo (* .arshad) para aspnet_isapi.dll no IIS.
A interface IHttpHandler possui o método ProcessRequest e a propriedade IsReusable que precisam ser implementadas. ProcessRequest: neste método, você escreve o código que produz a saída para o manipulador. IsResuable: Esta propriedade informa se esse manipulador pode ser reutilizado ou não.
Você pode registrar o manipulador no arquivo web.config assim
<httpHandlers>
<add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>
Nota: aqui estamos lidando com qualquer nome de arquivo com a extensão arshad.
O mecanismo do ASP.NET emite muitos eventos à medida que a solicitação passa pelo pipeline de solicitação. Alguns desses eventos são AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest. Usando o HttpModule, você pode escrever lógica nesses eventos. Essa lógica é executada quando os eventos são disparados e antes que a solicitação chegue ao IIS.
Há duas etapas envolvidas na criação dos módulos: 1. Implementar a interface IHttpModule 2. Registrar o módulo no arquivo web.config ou machine.config
exemplo: Segurança: usando o módulo HTTP, você pode executar autenticação personalizada ou outras verificações de segurança antes que a solicitação chegue ao IIS.
O manipulador de HTTP é o processo executado em resposta a uma solicitação feita a um aplicativo Web do ASP.NET. Os módulos HTTP permitem examinar solicitações de entrada e saída e executar ações com base na solicitação.
O HttpHandler é responsável por manipular a solicitação http por extensão enquanto o HttpModule está respondendo aos eventos do ciclo de vida do aplicativo.
Bom artigo sobre ele HttpModule-and-HttpHandlers
Referência: INFO: Visão Geral sobre Módulos HTTP e Manipuladores HTTP do ASP.NET
“Os módulos são chamados antes e depois da execução do manipulador. Os módulos permitem que os desenvolvedores interceptem, participem ou modifiquem cada solicitação individual. Manipuladores são usados para processar solicitações individuais de terminal. Os manipuladores permitem que o ASP.NET Framework processe URLs HTTP individuais ou grupos de extensões de URL em um aplicativo. Ao contrário dos módulos, apenas um manipulador é usado para processar uma solicitação ”.
O manipulador HTTP é o local em que a compilação é feita com base na configuração. como se a extensão da página fosse .aspx, ela será compilada através de system.web.Ui.Pagahandlefactory. depois que a compilação for feita na solicitação de identificador HTTP, o módulo HTTP e o IIS serão enviados.
Manipulador HTTP
Manipulador HTTP é o processo executado em resposta a uma solicitação HTTP. Portanto, sempre que o usuário solicita um arquivo, ele é processado pelo manipulador com base na extensão. Portanto, os manipuladores http personalizados são criados quando você precisa de um tratamento especial com base na extensão do nome do arquivo. Vamos considerar um exemplo para criar RSS para um site. Portanto, crie um manipulador que gere XML formatado em RSS. Agora vincule a extensão .rss ao manipulador personalizado.
Módulos HTTP
Módulos HTTP são conectados ao ciclo de vida de uma solicitação. Portanto, quando uma solicitação é processada, ela é passada por todos os módulos no pipeline da solicitação. Portanto, geralmente os módulos http são usados para:
Segurança: Para autenticar uma solicitação antes que ela seja tratada.
Estatísticas e registro em log: como os módulos são chamados para cada solicitação, eles podem ser usados para coletar estatísticas e para registrar informações.
Cabeçalho personalizado: como a resposta pode ser modificada, é possível adicionar informações de cabeçalho personalizadas à resposta.