私の質問は簡単です(答えはそうではないかもしれませんが):サーバー側のアップロードハンドラーをC#/ ASP.NETで実装する方法を決定しようとしています。
HttpModules(IHttpModuleインターフェイス)とHttpHandlers(IHttpHandlerインターフェイス)の両方を使用しましたが、いずれかのメカニズムを使用してこれを実装できることがわかりました。また、2つの違いを理解していないことにも気付きます。
私の質問はこれです:どのような場合にIHttpModuleの代わりにIHttpHandlerを使用することを選択しますか(およびその逆)?
パイプラインではるかに高いレベルで実行されていますか?特定の状況で設定する方がはるかに簡単ですか?中程度のセキュリティではうまく機能しませんか?
ASP.NETHTTPハンドラーは、ASP.NETへの要求に応じて実行されるプロセス(「エンドポイント」と呼ばれることが多い)です。ウェブアプリケーション。最も一般的なハンドラーは、.aspxファイルを処理するASP.NETページハンドラーです。ユーザーが.aspxファイルを要求すると、要求はページハンドラーを介してページによって処理されます。ブラウザにカスタム出力をレンダリングする独自のHTTPハンドラーを作成できます。
カスタムHTTPハンドラーの一般的な用途は次のとおりです。
HTTPモジュールは、アプリケーションに対して行われるすべてのリクエストで呼び出されるアセンブリです。 HTTPモジュールはASP.NET要求パイプラインの一部として呼び出され、要求全体のライフサイクルイベントにアクセスできます。 HTTPモジュールを使用すると、着信および発信リクエストを調べ、リクエストに基づいてアクションを実行できます。
HTTPモジュールの一般的な用途は次のとおりです。
here で述べたように、HttpModulesはリクエスト処理パイプラインに自分自身をプラグインできる単純なクラスです。一方、HttpHandlerは、リクエスト処理パイプライン内での位置だけでなく、特定のファイル拡張子。
IHttpModule
を使用すると、より多くの制御が可能になります。基本的に、Webアプリケーションに向けられたトラフィックのallを制御できます。 IHttpHandler
は制御を減らします(トラフィックはフィルターにかけられますbeforeハンドラーに到達します)が、これがニーズに十分であれば、IHttpModule
。
とにかく、カスタムロジックを別のクラスに入れて、IHttpModule
またはIHttpHandler
のいずれかからこのクラスを使用するのがおそらく最善です。この方法では、どちらを選択するかを心配する必要はありません。実際、bothIHttpHandler
およびIHttpModule
を実装する追加のクラスを作成し、Web.config
に設定して使用するものを決定できます。
15秒にはすてきな小さな チュートリアル があり、実用的な例を示しています
モジュールは、要求がハンドラーによって実際に処理される前後に、アプリケーションによって発生したイベントを処理することを目的としています。一方、ハンドラーには、アプリケーションイベントをサブスクライブする機会が与えられておらず、代わりに特定のリクエストを処理する「メイン」作業のためにProcessRequestメソッドを呼び出すだけです。
Microsoftのこのドキュメントをご覧ください(「リクエストはHttpApplicationパイプラインによって処理されます」セクションのページの半分ほど下にあります)。
http://msdn.Microsoft.com/en-us/library/bb470252.aspx
手順15で、ハンドラーが実行する機会を得ていることがわかります。そのステップの前後のすべてのイベントはモジュールによるインターセプトに使用できますが、ハンドラーには使用できません。
達成しようとしている特定の機能に応じて、ハンドラーまたはモジュールを使用してアップロードハンドラーを実装できます。両方を使用することになるかもしれません。
考慮すべきことは、すでに記述されているアップロードハンドラを使用することです。
これは無料でオープンソースのものです。
http://www.brettle.com/neatupload
商用のものは次のとおりです。
http://krystalware.com/Products/SlickUpload/
NeatUploadのドキュメントを見ると、モジュールを構成する必要があることがわかります。