2011-01-31 3 views
2

В чем разница между классом HttpApplication и IHttpModule? Являются ли они одинаковыми или разными?В чем разница между классом HttpApplication и IHttpModule?

Я вижу статьи, в которых упоминаются те же события в обоих классах.

+0

* Те же события * да, если они являются событиями уровня запроса. Но не тогда, когда они являются событиями на уровне приложений. –

ответ

2

HttpApplication - это экземпляр веб-приложения, в котором зарегистрировано несколько IHttpModule экземпляров. Вот почему каждый экземпляр IHttpModule обрабатывает определенную часть выполнения приложения, поэтому его обычно можно использовать повторно во многих приложениях (подумайте о модуле обработки Session или модуле проверки подлинности).

С точки зрения применения/обработки запросов, существует много общего. HttpApplication имеет доступ к событиям на уровне приложений, как OnStart, OnEnd и т.д., а также события запроса на уровне как OnBeginRequest, OnEndRequest и т.д. IHttpModule с другой стороны, имеет доступ только к событиям запроса уровня.

Дополнительное примечание: Можно обрабатывать запуск приложений и конечных событий, даже с использованием IHttpModule, но это не документированная особенность, и вы должны принять некоторые специальные меры предосторожности. Проверьте эти два сообщения в блоге, которые объясняют все это в большой глубине:
Writing a custom IHttpModule that handles Application_OnStart event
How to correctly use IHttpModule to handle Application_OnStart event

Я предлагаю вам прочитать немного о трубопроводе выполнения жизненного цикла приложения:

+1

+1 люблю изучать новый материал каждый раз, когда я пытаюсь ответить на что-то! – davidsleeps

+0

Мне нужна хорошая статья, которая ясно объясняет –

+0

@Chandan Khatwani: Что? Вы мне не верите, когда я говорю, что «HttpApplication» обрабатывает события уровня приложения и реализации «IHttpModule» обрабатывают события уровня запроса? ;) –

0

Существует не какая-либо большая разница, кроме HttpModules, которая позволяет удалить или отделить обработку события от остальной части вашего приложения. Это может помочь в повторном использовании кода, особенно в приложениях.
Кроме того, используя эту технику, вы можете добавить в HttpModules к вашему приложению без необходимости изменять какой-либо существующий исходный код (например, Elmah), чтобы обеспечить дополнительную функциональность.

0

IHttpModule - управляемый обработчик запросов, что означает, что реализует «уловы» для запроса жизненного цикла.

HttpApplication представляет приложение ASP.NET для веб-сервера (IIS). Правильно, у него есть события и другие члены , которые вам нужны в контексте HTTP-модуля.

Вы можете разработать HTTP-модуль, если вам нужно реализовать индивидуальный способ обработки некоторых входных данных , заданных некоторым HTTP-запросом.Очевидно, что вам может потребоваться доступ к HTTP-приложению, которое равно тем, которые отображают события жизненного цикла запроса.

резюме является модуль HTTP является наблюдателем HTTP приложения, которые могут реализовать логику для того, чтобы процесс -запрос HTTP в способе сигналы приложений HTTP каждый шаг ASP.NET infraestructure жизненного цикла.

+0

Можете ли вы предложить мне хорошую статью, которая поможет мне лучше понять разницу. –

+0

Это так просто, Чандан. HTTP-приложение «это приложение» (ваш веб-сайт), в то время как HTTP-модуль является чем-то вроде «процессора запроса к приложению»: D –

+0

извините ... Мне все еще не ясно. –

Смежные вопросы