2011-01-31 21 views
2

HttpApplicationクラスとIHttpModuleの違いは何ですか?それらは同じか異なっていますか?HttpApplicationクラスとIHttpModuleの違いは何ですか?

私は、両方のクラスで同じイベントが記載されている記事を参照してください。

+0

*リクエストレベルのイベントである限り、同じイベント*可能です。しかし、アプリケーションレベルのイベントではありません。 –

答えて

2

HttpApplicationは、複数のIHttpModuleインスタンスが登録されているWebアプリケーションインスタンスです。そのため、すべてのIHttpModuleインスタンスがアプリケーションの実行の特定の部分を処理するため、通常は多くのアプリケーションで再利用できます(Sessionハンドリングモジュールまたは認証モジュールと考える)。

アプリケーション/要求処理に関して、多くの類似点があります。 HttpApplicationのOnStart、OnEndなどのようなアプリケーション・レベルのイベントへのアクセスを有するだけでなく、一方 OnBeginRequest OnEndRequestIHttpModuleような要求レベルのイベントは、要求レベルのイベントへのアクセスを有します。

追加ノート:それものIHttpModuleを使用して、アプリケーションの開始と終了のイベントを処理することが可能ですが、これは非文書化機能であり、あなたには、いくつかの特別な予防措置を取らなければなりません。偉大な深さにそれをすべてを説明し、これら2件のブログ記事をチェック:
Writing a custom IHttpModule that handles Application_OnStart event
How to correctly use IHttpModule to handle Application_OnStart event

私はあなたがアプリケーションのライフサイクルの実行パイプラインについて少し読むことをお勧め:

+1

私は何かを試してみるたびに、新しいものを学ぶのが大好きです! – davidsleeps

+0

私は明確に説明する良い記事が必要です –

+0

@Chandan Khatwani:何ですか? 'HttpApplication'がアプリケーションレベルのイベントを処理し、' IHttpModule'の実装がリクエストレベルのイベントを処理すると私は信じませんか? ;) –

0

HttpModules以外の大きな違いはありませんが、アプリケーションの残りの部分からイベントの処理を削除したり、分離したりすることができます。これは、特にアプリケーション間でのコードの再利用に役立ちます。
さらに、このテクニックを使用すると、既存のソースコード(たとえばElmah)を変更することなく、特別な機能を提供することなく、HttpModulesをアプリケーションに追加できます。

0

IHttpModuleはマネージドリクエストハンドラで、要求 のライフサイクルを「キャッチ」することを意味します。

HttpApplicationは、Webサーバー(IIS)ASP.NETアプリケーションを表します。そうですね、HTTPモジュールのコンテキストで必要なイベントやその他の メンバーがあります。

いくつかのHTTPリクエストによって与えられた入力データ をカスタマイズする方法を実装する必要がある場合は、HTTPモジュールを開発することができます。明らかに、要求ライフサイクルイベントを公開するHTTPアプリケーション( )にアクセスする必要があります。

要約HTTPモジュールは、HTTPアプリケーションがのHTTP要求を処理するロジックを実装できるHTTPアプリケーションのオブザーバであり、HTTPアプリケーションがASP.NETインフラストラクチャのすべてのステップにライフサイクルを伝えるように通知します。

+0

私は良い違いを理解するのに役立つ素敵な記事を教えてもらえますか –

+0

それは簡単です、チャンダン。 HTTPアプリケーションは「アプリケーション」(あなたのウェブサイト)ですが、HTTPモジュールは「アプリケーションへのリクエストのプロセッサ」のようなものです:D –

+0

申し訳ありません...私はまだそれではっきりしません。 –

関連する問題