1. ホーム
  2. c#

[解決済み] IHttpHandlerとIHttpModuleの比較

2023-07-28 15:48:02

疑問点

私の質問は簡単です(ただし、答えはおそらくそうではないでしょう)。 私は、C# / ASP.NET でサーバー側のアップロードハンドラーを実装する方法を決定しようとしています。

私は HttpModules (IHttpModule interface) と HttpHandlers (IHttpHandler interface) の両方を使用したことがあり、どちらのメカニズムでもこれを実装できることを思いつきました。 また、この 2 つの違いを理解していないことも判明しました。

だから私の質問はこれです。 どのような場合に、IHttpModule の代わりに IHttpHandler を使用することを選択するでしょうか (逆も同様)?

パイプラインのより高い位置で実行されますか? 特定の状況で設定するのがずっと簡単なのか? 中程度のセキュリティではうまく機能しないのでしょうか?

どのように解決するのですか?

ASP.NET HTTP ハンドラ は、ASP.NET Web アプリケーションへのリクエストに応答して実行されるプロセス (頻繁に "endpoint" と呼ばれる) です。最も一般的なハンドラは、.aspx ファイルを処理する ASP.NET ページハンドラです。ユーザーが .aspx ファイルをリクエストすると、そのリクエストはページハンドラを通してページによって処理されます。ブラウザにカスタム出力をレンダリングする独自のHTTPハンドラを作成することができます。

カスタム HTTP ハンドラの典型的な用途は次のとおりです。

  • RSS フィード Web サイトの RSS フィードを作成するには、RSS フォーマットの XML を発行するハンドラを作成します。そして、.rss などのファイル名拡張子をカスタムハンドラにバインドします。ユーザーがサイトに.rssで終わるリクエストを送信すると、ASP.NETはハンドラを呼び出してリクエストを処理します。
  • 画像サーバー Web アプリケーションでさまざまなサイズの画像を提供したい場合、画像のサイズを変更するカスタム ハンドラーを記述し、ハンドラーの応答としてユーザーに画像を送信できます。

HTTP モジュール は、アプリケーションに行われるすべてのリクエストで呼び出されるアセンブリです。HTTPモジュールはASP.NETのリクエストパイプラインの一部として呼び出され、リクエストのライフサイクルイベントにアクセスすることができます。HTTPモジュールにより、受信および送信されるリクエストを調べ、リクエストに基づいたアクションを取ることができます。

HTTP モジュールの典型的な用途は次のとおりです。

  • セキュリティ 要求されたページ、XML Web サービス、またはハンドラーが呼び出される前に、HTTP モジュールは受信要求を調べることができるので、カスタム認証や他のセキュリティ チェックを実行できます。統合モードで動作しているインターネット インフォメーション サービス (IIS) 7.0 では、アプリケーション内のすべてのコンテンツ タイプにフォーム認証を拡張できます。
  • 統計とログ HTTP モジュールはすべてのリクエストで呼び出されるため、リクエストの統計とログ情報を、個々のページではなく、一元化されたモジュールで収集することができます。
  • カスタムヘッダーまたはフッター 送信するレスポンスを変更できるため、カスタムヘッダー情報などのコンテンツをすべてのページまたは XML Web サービスのレスポンスに挿入できます。

から http://msdn.microsoft.com/en-us/library/bb398986.aspx