example - remarks c#
¿Cómo disponer IHttpModule correctamente? (2)
Toda la implementación de IHttpModule que he visto se ve a continuación:
class HttpCompressionModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.SomeEvent += OnSomeEvent;
}
private void OnSomeEvent(Object source, EventArgs e)
{
// ...
}
public void Dispose()
{
// nothing here !!!
}
}
Me pregunto por qué el método de Dispose
siempre vacío. ¿No deberíamos cancelar la suscripción del evento al que nos suscribimos en el método Init
?
El ciclo de vida de un HttpModule está estrechamente integrado con el ciclo de vida de una aplicación HttpAplication. Las instancias de HttpModule se generan cuando la aplicación se inicia y se destruye cuando se elimina la aplicación.
En este caso, no tiene sentido cancelar la suscripción al evento porque el editor (HttpApplication) se está eliminando de todos modos. Por supuesto, en una situación en la que no se eliminaba al editor, desconectar el controlador del evento sería lo correcto.
El método de desecho no estará vacío si necesita crear una instancia de objetos IDisposibles dentro de su módulo.
class HttpCompressionModule : IHttpModule
{
private IDisposalbe _myResource;
public void Init(HttpApplication application)
{
_myResource = new MyDisposableResource();
application.SomeEvent += OnSomeEvent;
}
private void OnSomeEvent(Object source, EventArgs e)
{
// ...
myResource.DoSomething();
}
public void Dispose()
{
_myResource.Dispose();
}
}