¿Alguien puede explicar en menos de 2 oraciones la diferencia entre ambas? Sí, sé que Google puede proporcionar cientos de respuestas, pero no una de cada 2 oraciones claras :)
¿Alguien puede explicar en menos de 2 oraciones la diferencia entre ambas? Sí, sé que Google puede proporcionar cientos de respuestas, pero no una de cada 2 oraciones claras :)
Respuestas:
HttpHandler es hacia donde se dirige el tren de solicitud. HttpModule es una estación en el camino.
Las dos oraciones:
Se ejecutará un HttpModule para cada solicitud a su aplicación, independientemente de la extensión, y generalmente se usa para cosas como seguridad, estadísticas, registro, etc.
Un HttpHandler generalmente se asocia con una extensión específica y se usa para cosas como fuentes RSS, generación o modificación de imágenes dinámicas y similares.
Un poco más de explicación si eso no está completamente claro:
A mi modo de ver, los módulos "se conectan" a la canalización de solicitudes, mientras que los controladores "manejan" una extensión de archivo específica. Entonces, si tiene un sitio con un LoggingModule y un PdfHandler, ambos se ejecutarán para una solicitud a http://example.com/sample.pdf , y el módulo de registro solo se ejecutará para una solicitud a http: // ejemplo.com/page.aspx .
Hay un artículo bastante claro sobre la diferencia en MSDN: Descripción general de controladores HTTP y módulos HTTP
ProcessRequest
. El módulo, por otro lado, se ejecutará en cualquier punto del ciclo de vida al que lo conecte. Para su escenario de querer ejecutar algo antes de la página aspx, desea un módulo. Sin embargo, debe filtrar manualmente las solicitudes a páginas que no son .aspx
El objetivo principal y común de HttpHandler y HttpModule es inyectar la lógica de preprocesamiento antes de que la solicitud ASP.NET llegue al servidor IIS.
ASP.NET proporciona dos formas de inyectar lógica en la canalización de solicitudes;
ejemplo: fuentes RSS: para crear una fuente RSS para un sitio web, puede crear un controlador que emita XML con formato RSS. Entonces, cuando los usuarios envían una solicitud a su sitio que termina en .rss, ASP.NET llama a su controlador para procesar la solicitud.
Hay tres pasos involucrados en la creación del controlador 1. Implemente la interfaz IHttpHandler. 2. Registre el controlador en el archivo web.config o machine.config. 3. Asigne la extensión del archivo (* .arshad) a aspnet_isapi.dll en el IIS.
La interfaz IHttpHandler tiene el método ProcessRequest y la propiedad IsReusable que debe implementarse. ProcessRequest: en este método, usted escribe el código que produce la salida para el controlador. IsResuable: esta propiedad indica si este controlador se puede reutilizar o no.
Puede registrar el controlador en el archivo web.config como este
<httpHandlers>
<add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>
Nota: aquí estamos manejando cualquier nombre de archivo con extensión arshad.
El motor ASP.NET emite muchos eventos a medida que la solicitud pasa a través de la canalización de solicitudes. Algunos de esos eventos son AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest. Al usar HttpModule puede escribir lógica en estos eventos. Estas lógicas se ejecutan cuando se desencadenan los eventos y antes de que la solicitud llegue a IIS.
Hay dos pasos involucrados en la creación de módulos: 1. Implementar la interfaz IHttpModule 2. Registrar el módulo en el archivo web.config o machine.config
ejemplo: Seguridad: con el módulo HTTP, puede realizar una autenticación personalizada u otras comprobaciones de seguridad antes de que la solicitud llegue a IIS.
El controlador HTTP es el proceso que se ejecuta en respuesta a una solicitud realizada a una aplicación web ASP.NET. Los módulos HTTP le permiten examinar las solicitudes entrantes y salientes y tomar medidas en función de la solicitud.
HttpHandler es responsable de manejar la solicitud http por extensión mientras HttpModule responde a los eventos del ciclo de vida de la aplicación.
Buen artículo sobre HttpModule-and-HttpHandlers
Referencia: INFORMACIÓN: Información general sobre módulos HTTP ASP.NET y controladores HTTP
“Los módulos se llaman antes y después de que se ejecute el controlador. Los módulos permiten a los desarrolladores interceptar, participar o modificar cada solicitud individual. Los manejadores se utilizan para procesar solicitudes de puntos finales individuales. Los controladores permiten que ASP.NET Framework procese URL HTTP individuales o grupos de extensiones URL dentro de una aplicación. A diferencia de los módulos, solo se utiliza un controlador para procesar una solicitud ”.
El controlador HTTP es donde realmente se realiza la compilación en función de la configuración. como si la extensión de la página es .aspx, entonces se compilará a través de system.web.Ui.Pagahandlefactory. una vez que se realiza la compilación en la solicitud de identificador HTTP, el módulo HTTP y el IIS irán.
HTTP Handler
HTTP Handler es el proceso que se ejecuta en respuesta a una solicitud HTTP. Por lo tanto, cada vez que el usuario solicita un archivo, el controlador lo procesa en función de la extensión. Por lo tanto, los manejadores http personalizados se crean cuando necesita un manejo especial basado en la extensión del nombre del archivo. Consideremos un ejemplo para crear RSS para un sitio. Por lo tanto, cree un controlador que genere XML con formato RSS. Ahora enlace la extensión .rss al controlador personalizado.
Módulos HTTP
Los módulos HTTP se conectan al ciclo de vida de una solicitud. Entonces, cuando se procesa una solicitud, se pasa a través de todos los módulos en la tubería de la solicitud. En general, los módulos http se usan para:
Seguridad: para autenticar una solicitud antes de que se maneje la solicitud.
Estadísticas y registro: dado que se solicitan módulos para cada solicitud, se pueden usar para recopilar estadísticas y para registrar información.
Encabezado personalizado: dado que la respuesta se puede modificar, se puede agregar información de encabezado personalizado a la respuesta.