Как правильно распоряжаться IHttpModule?
все реализации IHttpModule Я видел, выглядит следующим образом:
class HttpCompressionModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.SomeEvent += OnSomeEvent;
}
private void OnSomeEvent(Object source, EventArgs e)
{
// ...
}
public void Dispose()
{
// nothing here !!!
}
}
мне интересно, почему Dispose
метод всегда пуст? Не следует ли нам отказаться от подписки на событие, которое мы подписываем в Init
способ?
2 ответов
жизненный цикл HttpModule тесно интегрирован с жизненным циклом HttpApplication. Экземпляры HttpModule создаются при запуске приложения и уничтожаются при удалении приложения.
в этом случае нет смысла отказываться от подписки на событие, потому что издатель (HttpApplication) все равно удаляется. Конечно, в ситуации, когда издатель не удалялся, отсоединение обработчика событий было бы правильным надо что-то делать.
метод dispose не будет пустым, если вам нужно создать экземпляр объектов IDisposable внутри вашего модуля.
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();
}
}