1

WebアプリケーションにHttpApplication(Global.asax)があります。これを使用して、未処理の例外をキャッチしてログに記録し、WebFormURLRoutingを設定します。これはすべて機能しますが、このコードをアプリケーションフレームワークに移動したいと思います(つまり、Global.asax.csにはありません)。

フレームワークでHttpApplicationクラスを作成しようとしましたが、イベントをオーバーライドできないようです。とにかく、私はこれらのイベントを消費する代わりにHttpModuleを使用できると信じています、これを行います:

1)Global.asaxの必要性を完全に排除しますか?

2)これはスケールアップにどのように影響しますか?つまり、最終的にはWebファームでアプリケーションを実行します

3)ファイルのアップロードやファイルのダウンロードなどの他の処理を行うHttpHandlerがありますが、使用するHttpModule / HttpHandlerの数に制限はありますか、それともオーバーヘッドを減らすためにこれらを組み合わせる必要がありますか?

コメントをいただければ幸いです

4

2 に答える 2

3

HTTPモジュールでGlobal.asaxから知っているイベントをリッスンするのは、モジュールのInitメソッドでHttpApplicationインスタンスのイベントに接続するのと同じくらい簡単です。HttpApplicationのメソッドをオーバーライドすることはできません。そのイベントをリッスンする必要があります。

その他の質問について:1)はい、私のWebプロジェクトの多くでは、Global.asaxを使用していません。

2)これは実際にはアップスケーリングに影響しません。ファーム内のWebサーバーごとに、HTTPModuleを正しく接続する必要があります。ただし、これはweb.configで行われるため、すでに存在しているはずです。

3)簡単な答え:いいえ。httphandlersの場合、着信httpリクエストファイルの拡張子やパス、HTTPメソッドに基づいて選択および実行されます。特定のハンドラーの選択がパフォーマンスの問題になる前に、これらの多くが本当に必要になります。HttpModuleの場合、リクエストごとにコードを実行するオプションがあります。明らかに、そのコードの実行に時間がかかると、パフォーマンスに影響します。ただし、httpモジュールを介して実行されているという事実ではなく、時間がかかるのはコードです。

于 2009-08-16T08:51:46.300 に答える
1

フレームワークでApplicationクラスを作成し、各アプリケーションでそれを継承できます。したがって、フレームワークにすべてのハンドルがあります。
回答:

  1. Applicationクラスの使用を避けることはできますが、そのためのハンドラーを追加することはお勧めできません。
  2. ハンドラーの数は、一般的に呼び出し可能性に影響を与えません。しかし、それは保守性に影響を及ぼします。
  3. #2のため、ハンドラーの数を少なくしてください。
于 2009-08-16T09:15:56.740 に答える