3

まず第一に、皆さんが良いクリスマスを過ごせますように:)

ここ数年はデスクトップ アプリケーションの開発者ですが、現在はフルタイムで ASP.NET に取り組んでいます (転職 :) )。

そのため、ここ数日、新しい訪問者が私の URL にアクセスすると実際に何が起こるかについて、ますます疑問に思うようになりました..

私は非常に単純なSignal Rベースのアプリに取り組んでおり、すべてのセッションで共有するためにいくつかのシングルトンが必要でした。デスクトップでは非常に単純ですが、Webではまったくわかりません:(

基本的に、ここにこの質問があります..

5 人のユーザーが私の URL にアクセスした場合、IIS は実際に何をしますか? 全員がアプリの個別のインスタンスを取得するのでしょうか、それとも同じインスタンスを使用するのでしょうか? 簡単な言葉に分解できれば、それは素晴らしいことです!:)

また、静的なシングルトンを持つクラス ライブラリがあるとします。これは、すべてのセッションでそのクラスの唯一のインスタンスになりますか?

うまくいけば、それは理にかなっています:)

助けてくれてありがとう!

乾杯。ステ。

4

2 に答える 2

1

デフォルトのIISインストールがある場合は、すべての要求を処理する1つのアプリプールがあります。したがって、静的シングルトンは、例の5人全員で共有されます。

ただし、スケールアウトする必要がある場合は、複数のアプリプールがあります。

アプリプールは、アプリケーションのインスタンスです。

静的なものがデータベース接続などのものである場合は、静的なものを必要としないように、別の方法を検討することをお勧めします。ユーザーが関心を持っているビジネスに関連するものである場合、拡張する必要がある場合は、クライアント間でこれを共有する他の方法を検討するのが最善です。

于 2012-12-21T08:48:07.817 に答える
1

これはIIS ライフ サイクル
と呼ばれます 。完全な詳細は、Microsoft および IIS の作成者から直接読む必要があります。
すべての IIS で同じではありません。

IIS 7.0 のライフ サイクルの概要

IIS 5.0 および 6.0 のライフ サイクルの概要

ネットで検索するともっとあります。

それらはすべてアプリの個別のインスタンスを取得しますか、それとも同じものを使用しますか

同じアプリケーション(Web ガーデン)に多くのプールを使用する場合、要求はプール間で分割されます。そうでない場合は、1 つのプール、1 つのインスタンスがページを処理します。

ページはさまざまなスレッドから処理できますが、セッションにはグローバル ロックがあるため、MS セッションを使用する場合、ページはシリアルで処理されます (セッションを使用しなかったものを期待してください)。

各プールは、静的データを保持する 1 つのインスタンスであり、そのプールからのすべての要求に対して同じです。2 つのプールを使用する場合、2 つの異なる静的データ セットがあります。

セッション ロックに関するいくつかの質問: Trying to make Web Method Asynchronous同じセッションを共有する別の Web アプリの処理中に Web アプリがブロックされる

于 2012-12-21T08:13:21.323 に答える