3

http://msdn.microsoft.com/en-us/library/4wt3wttw.aspxからの引用:

HttpApplication クラスの 1 つのインスタンスは、その存続期間中に多くの要求を処理するために使用されます。ただし、一度に 1 つの要求しか処理できません。したがって、メンバー変数を使用して、リクエストごとのデータを格納できます。

なぜリクエストごとに?多分リクエストのセットごとですか?メンバー変数を使用して、HttpApplication のライフサイクル全体でデータを格納できるようです。したがって、2 番目の (この HttpApplication の) 要求の開始時の HttpApplication の状態は、最初の (この HttpApplication の) 要求の終了時の状態と同じです。

なぜリクエストごとに?

4

2 に答える 2

2

HttpApplication オブジェクトのメンバーを使用して、リクエストごとのデータを格納できることを示しています。これは、メンバーがリクエストごとのデータに制限されているという意味ではありません。HttpApplication.Application メンバーは、アプリケーション全体に対してグローバルなメンバーを保持しますが、要求の処理中に、特定の HttpApplication インスタンスは、ApplicationState オブジェクトに保持されているグローバル情報のみを、現在処理中の要求の情報で変更できます。HttpApplication オブジェクトが複数のリクエストに同時にアクセスできる場合、集約を使用してグローバル データを変更したり、任意のリクエストからデータを選択したりできる可能性があります。@Sidharth Panwar が述べたように、これにより同時実行性の問題が発生します。また、複数の要求を処理できるようにすることも悪夢です。なぜなら、(セキュリティ/メモリ上の理由から) 同じユーザーからのものであることを保証する必要があるためです。新しい要求が行われます。これにより、単一のインスタンスが大量の負荷を処理する可能性があります (したがって、ボトルネックになります)。

于 2010-09-10T18:53:22.650 に答える
0

IISに関しては、HttpApplicationインスタンスの1つ(Webアプリのアプリプールから選択)にリクエストが送信されます。このHttpApplication(global.asaxで定義)のイベントは、リクエストで利用できます。

私が理解していることから、複数のリクエストがHttpApplicationに同時にアクセスできると、不整合が生じることになります。Asp.Netはそれ自体が非常に複雑なアーキテクチャであるため、同時実行性を使用すると、作業が非常に困難になります。

リクエストごとのデータが少しねじれているか、概念が正しく理解されていない可能性がありますが、ある時点でHttpApplicationが1つのリクエストのみを処理しており、変数/値を保持できるわけではないと思います。 1回のリクエストでアプリケーションオブジェクト。Applicationオブジェクトに配置されたデータはリクエストごとではなく、すべてのリクエストで利用できるためです。

これがあなたが探しているものであるかどうか私に知らせてください:P

PSここにAsp.Netを理解するための最良のリンクがあります(http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp

これをよりよく理解するには、HttpApplicationセクションを確認してください。

于 2010-09-10T18:45:26.087 に答える