誰かが2つ未満の文で両方の違いを説明できますか?はい、私はグーグルが何百もの答えを提供できることを知っていますが、2つの明確な文に1つはありません:)
HttpHandlerは、リクエストトレインが向かう場所です。 HttpModuleは、途中のステーションです。
2つの文:
HttpModuleは、拡張子に関係なく、アプリケーションへのすべてのリクエストに対して実行され、通常、セキュリティ、統計、ロギングなどの目的で使用されます。
HttpHandlerは通常、特定の拡張子に関連付けられており、RSSフィード、動的な画像の生成または変更などに使用されます。
それが完全に明確でない場合、もう少し説明:
私がそれらについて考える方法-モジュールは要求パイプラインに「プラグイン」しますが、ハンドラーは特定のファイル拡張子を「処理」します。したがって、LoggingModuleとPdfHandlerを持つサイトがある場合、両方が http://example.com/sample.pdf へのリクエストに対して実行され、ロギングモジュールのみが http://example.com/page.aspx へのリクエスト。
MSDNの違いに関する非常に明確な記事があります。 HTTPハンドラーとHTTPモジュールの概要
HttpHandlerとHttpModuleの主な共通の目標は、ASP.NET要求がIISサーバーに到達する前に前処理ロジックを注入することです。
ASP.NETは、リクエストパイプラインにロジックを挿入する2つの方法を提供します。
例:RSSフィード:WebサイトのRSSフィードを作成するために、RSS形式のXMLを送信するハンドラーを作成できます。そのため、ユーザーが.rssで終わるサイトにリクエストを送信すると、ASP.NETはハンドラーを呼び出してリクエストを処理します。
ハンドラーの作成には3つの手順が含まれます。IHttpHandlerインターフェイスを実装します。 2. web.configまたはmachine.configファイルにハンドラーを登録します。 3.ファイル拡張子(* .arshad)をIISのaspnet_isapi.dllにマップします。
IHttpHandlerインターフェイスには、実装する必要があるProcessRequestメソッドとIsReusableプロパティがあります。 ProcessRequest:このメソッドでは、ハンドラーの出力を生成するコードを記述します。 IsResuable:このプロパティは、このハンドラーを再利用できるかどうかを示します。
このようにweb.configファイルにハンドラーを登録できます
<httpHandlers>
<add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>
注:ここでは、拡張子がarshadのファイル名を処理しています。
ASP.NETエンジンは、要求が要求パイプラインを通過するときに多くのイベントを発行します。それらのイベントには、AuthenticateRequest、AuthorizeRequest、BeginRequest、EndRequestがあります。 HttpModuleを使用すると、これらのイベントにロジックを記述できます。これらのロジックは、イベントが発生してリクエストがIISに到達する前に実行されます。
モジュールの作成には2つのステップがあります。1。IHttpModuleインターフェイスを実装します2. web.configまたはmachine.configファイルにモジュールを登録します
例:セキュリティ:HTTPモジュールを使用すると、リクエストがIISに到達する前にカスタム認証またはその他のセキュリティチェックを実行できます。
HTTPハンドラーは、ASP.NET Webアプリケーションへの要求に応じて実行されるプロセスです。 HTTPモジュールを使用すると、着信要求と発信要求を調べて、要求に基づいてアクションを実行できます。
HttpHandlerは、HttpModuleがアプリケーションのライフサイクルイベントに応答している間に、拡張機能によってhttp要求を処理します。
それについての素敵な記事 HttpModule-and-HttpHandlers
リファレンス:INFO:ASP.NET HTTPモジュールとHTTPハンドラーの概要
「ハンドラーの実行前後にモジュールが呼び出されます。モジュールを使用すると、開発者は個々のリクエストを傍受、参加、または変更できます。ハンドラーは、個々のエンドポイント要求を処理するために使用されます。ハンドラーにより、ASP.NET Frameworkは、アプリケーション内の個々のHTTP URLまたはURL拡張のグループを処理できます。モジュールとは異なり、リクエストの処理に使用されるハンドラは1つだけです。」.
HTTPハンドラーは、設定に基づいて実際にコンパイルが行われる場所です。ページ拡張子が.aspxの場合、system.web.Ui.Pagahandlefactoryを介してコンパイルされます。コンパイルがHTTPハンドルで行われると、HTTPモジュールとIISを介してリクエストが送信されます。