2009-02-21 8 views
6

He creado una aplicación web en la que estoy usando un módulo que redirecciona sin "www" urls (http://example.com/) a "www" urls (http://www.example.com/). Pero como estoy en el servidor de alojamiento compartido, donde no tengo permiso para implementar un HttpModule, probé el mismo código de módulo con el archivo Global.asax. ¡Eso funciona!¿Cuál es la diferencia de rendimiento entre HttpModule y Global.aspx?

Utilicé el siguiente evento (Application_BeginRequest()) para implementar mi funcionalidad HttpModule.

void Application_BeginRequest() 
{ 
    //module code 
} 

El módulo y la aplicación está funcionando bien y correctamente del archivo Global.asax pero estoy preocupado por el rendimiento.

Por qué utilizamos los HTTPModules en asp.net Si podemos implementar el mismo usando el archivo Global.asax. ¿Hay diferencias de rendimiento entre ambos? ¿O alguna diferencia de la que deba preocuparme cuando utilizo el archivo Global.asax en lugar de HttpModule?

¡Explique!

Respuesta

4

Global.asax hereda de HTTPApplication, y HTTPModules debe implementar IHTTPInterface.
El método HTTPModules Init obtiene el objeto HTTPApplication pasado.
En el método Init puede enganchar en los eventos de HTTPApplication.

Recomendaría utilizar HTTPModules siempre que sea posible.
Especialmente si hace un software empaquetado cuando el cliente puede reemplazar su global.asax por el suyo.

+0

Yo también prefiero los HTTPModules sobre Global.asax, pero en mi servidor de alojamiento compartido cuando intento implementar HttpModule, me da "500 Insternal Server Error". Es por eso que me estoy yendo con Global.asax – Prashant

+0

Una cosa más, no estoy recibiendo "Especialmente si usted hace software envuelto cuando el cliente puede reemplazar su global.asax con el suyo". esta linea de tus respuestas? ¿Qué es el "software retráctil" y cómo el cliente puede reemplazar el archivo global.asax? – Prashant

+0

En tiempo de ejecución, Global.asax se analiza y se compila en una clase .NET Framework generada dinámicamente derivada de la clase base HttpApplication. Si vende un paquete de software (envuelto), el cliente puede cambiar el archivo global.asax –

2

No hay diferencia. El objetivo de HTTPModules es la claridad y la separación. A menudo las personas canalizarán la solicitud a través de varios HTTPModules, que es algo que no se puede obtener con global.asax.

+1

Ok, eso significa que ambos métodos no tienen ninguna diferencia con respecto al rendimiento. Caz eso me importa :) – Prashant

Cuestiones relacionadas