HttpApplicationクラスとIHttpModuleの違いは何ですか?それらは同じか異なっていますか?HttpApplicationクラスとIHttpModuleの違いは何ですか?
私は、両方のクラスで同じイベントが記載されている記事を参照してください。
HttpApplicationクラスとIHttpModuleの違いは何ですか?それらは同じか異なっていますか?HttpApplicationクラスとIHttpModuleの違いは何ですか?
私は、両方のクラスで同じイベントが記載されている記事を参照してください。
HttpApplication
は、複数のIHttpModule
インスタンスが登録されているWebアプリケーションインスタンスです。そのため、すべてのIHttpModule
インスタンスがアプリケーションの実行の特定の部分を処理するため、通常は多くのアプリケーションで再利用できます(Session
ハンドリングモジュールまたは認証モジュールと考える)。
アプリケーション/要求処理に関して、多くの類似点があります。 HttpApplication
はのOnStart、OnEndなどのようなアプリケーション・レベルのイベントへのアクセスを有するだけでなく、一方 OnBeginRequest 、OnEndRequest等IHttpModule
ような要求レベルのイベントは、要求レベルのイベントへのアクセスを有します。
追加ノート:それものIHttpModuleを使用して、アプリケーションの開始と終了のイベントを処理することが可能ですが、これは非文書化機能であり、あなたには、いくつかの特別な予防措置を取らなければなりません。偉大な深さにそれをすべてを説明し、これら2件のブログ記事をチェック:
Writing a customIHttpModule
that handlesApplication_OnStart
event
How to correctly useIHttpModule
to handleApplication_OnStart
event
私はあなたがアプリケーションのライフサイクルの実行パイプラインについて少し読むことをお勧め:
私は何かを試してみるたびに、新しいものを学ぶのが大好きです! – davidsleeps
私は明確に説明する良い記事が必要です –
@Chandan Khatwani:何ですか? 'HttpApplication'がアプリケーションレベルのイベントを処理し、' IHttpModule'の実装がリクエストレベルのイベントを処理すると私は信じませんか? ;) –
HttpModules以外の大きな違いはありませんが、アプリケーションの残りの部分からイベントの処理を削除したり、分離したりすることができます。これは、特にアプリケーション間でのコードの再利用に役立ちます。
さらに、このテクニックを使用すると、既存のソースコード(たとえばElmah)を変更することなく、特別な機能を提供することなく、HttpModulesをアプリケーションに追加できます。
http://aspalliance.com/442_Introducing_HTTPModules.all
方法のHttpModulesのご理解を助け、HttpApplicationsが一緒に動作するはずです良い記事。
IHttpModuleはマネージドリクエストハンドラで、要求 のライフサイクルを「キャッチ」することを意味します。
HttpApplicationは、Webサーバー(IIS)ASP.NETアプリケーションを表します。そうですね、HTTPモジュールのコンテキストで必要なイベントやその他の メンバーがあります。
いくつかのHTTPリクエストによって与えられた入力データ をカスタマイズする方法を実装する必要がある場合は、HTTPモジュールを開発することができます。明らかに、要求ライフサイクルイベントを公開するHTTPアプリケーション( )にアクセスする必要があります。
要約HTTPモジュールは、HTTPアプリケーションがのHTTP要求を処理するロジックを実装できるHTTPアプリケーションのオブザーバであり、HTTPアプリケーションがASP.NETインフラストラクチャのすべてのステップにライフサイクルを伝えるように通知します。
私は良い違いを理解するのに役立つ素敵な記事を教えてもらえますか –
それは簡単です、チャンダン。 HTTPアプリケーションは「アプリケーション」(あなたのウェブサイト)ですが、HTTPモジュールは「アプリケーションへのリクエストのプロセッサ」のようなものです:D –
申し訳ありません...私はまだそれではっきりしません。 –
*リクエストレベルのイベントである限り、同じイベント*可能です。しかし、アプリケーションレベルのイベントではありません。 –