誰かが両方の違いを2文未満で説明できますか?はい、私はグーグルが何百もの答えを提供できることを知っていますが、2つの明確な文章に1つはありません:)
誰かが両方の違いを2文未満で説明できますか?はい、私はグーグルが何百もの答えを提供できることを知っていますが、2つの明確な文章に1つはありません:)
回答:
HttpHandlerは、リクエストトレインが向かう場所です。HttpModuleは、途中のステーションです。
2つの文:
HttpModuleは、拡張機能に関係なく、アプリケーションへのすべてのリクエストに対して実行され、通常、セキュリティ、統計、ロギングなどに使用されます。
HttpHandlerは通常、特定の拡張子に関連付けられており、RSSフィード、動的な画像の生成や変更などに使用されます。
それが完全に明確でない場合のもう少しの説明:
ハンドラーが特定のファイル拡張子を「処理」するのに対して、モジュールは要求パイプラインに「プラグイン」します。したがって、LoggingModuleとPdfHandlerを含むサイトがある場合、両方がhttp://example.com/sample.pdfへのリクエストに対して実行され、loggingモジュールのみがhttp://へのリクエストに対して実行されます。 example.com/page.aspx。
MSDNの違いに関するかなり明確な記事があります:HTTPハンドラーとHTTPモジュールの概要
ProcessRequest
。一方、モジュールは、それを配線するライフサイクルの任意の時点で実行されます。aspxページの前に何かを実行したいというシナリオでは、モジュールが必要です。ただし、.aspx以外のページへのリクエストは手動で除外する必要があります
HttpHandlerとHttpModuleの主な共通の目標は、ASP.NET要求がIISサーバーに到達する前に前処理ロジックを注入することです。
ASP.NETは、リクエストパイプラインにロジックを挿入する2つの方法を提供します。
例:RSSフィード:WebサイトのRSSフィードを作成するには、RSS形式のXMLを送信するハンドラーを作成できます。したがって、ユーザーが.rssで終わる要求をサイトに送信すると、ASP.NETはハンドラーを呼び出して要求を処理します。
ハンドラー1の作成には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ハンドラー
HTTPハンドラーは、HTTP要求に応答して実行されるプロセスです。したがって、ユーザーがファイルを要求するたびに、拡張子に基づいてハンドラーによって処理されます。そのため、ファイル名拡張子に基づいて特別な処理が必要な場合は、カスタムhttpハンドラーが作成されます。サイトのRSSを作成する例を考えてみましょう。そのため、RSS形式のXMLを生成するハンドラーを作成します。次に、.rss拡張子をカスタムハンドラーにバインドします。
HTTPモジュール
HTTPモジュールはリクエストのライフサイクルにプラグインされます。したがって、リクエストが処理されると、リクエストのパイプライン内のすべてのモジュールに渡されます。したがって、一般的にhttpモジュールは次の目的で使用されます。
セキュリティ:リクエストが処理される前にリクエストを認証します。
統計とロギング:モジュールはリクエストごとに呼び出されるので、統計の収集と情報のロギングに使用できます。
カスタムヘッダー:レスポンスを変更できるため、カスタムヘッダー情報をレスポンスに追加できます。