ASP.NET Webアプリケーション内のすべてのスレッド/セッションでクラスや変数などのリソースを共有したいとします。何が良いですか?何が良いですか:静的変数V.S. Asp.NETアプリケーションセッション?
1)その静的変数に対するスレッドセーフなアクセサを持つ静的変数?
2)またはASP.NETアプリケーションセッション変数?
ASP.NET Webアプリケーション内のすべてのスレッド/セッションでクラスや変数などのリソースを共有したいとします。何が良いですか?何が良いですか:静的変数V.S. Asp.NETアプリケーションセッション?
1)その静的変数に対するスレッドセーフなアクセサを持つ静的変数?
2)またはASP.NETアプリケーションセッション変数?
これらのうちの1つしか持っていない場合、ほとんど違いはありません。
複数ある場合は、Application
変数ではなく静的変数を使用する必要があります。 Application.Lock
メソッドはすべてApplication
の変数をロックしますが、静的変数には個別の同期識別子を使用できます。そのため、各ロックはその特定の変数にアクセスするコードにのみ影響します。
これは、複数のページを通過してデータを収集する一般的なシナリオです。このシナリオでは、私はセッションオブジェクトを使用します。静的変数は、完全なアプリケーションが同じオブジェクトを必要とするときに使用する必要があります。
保持したい値がユーザーに依存する場合は、「セッション」を使用します。
実際のセッション変数は、セッション全体の値を保存する場合にのみ使用する必要がありますが、変数を初期化してフォーム間で使用したい場合や、同じオブジェクトの静的変数を使用する必要があります全体のアプリケーションを介してご利用いただけます。
スタティックメンバーがより良いパフォーマンスを提供しますが、下側は、彼らがスレッドセーフではありませんです。
あなたがアプリケーションクラスの静的メンバではなく、Applicationオブジェクトにデータを保存することをお勧めします。これにより、アプリケーションディクショナリの項目にアクセスするよりも静的変数にすばやくアクセスできるため、パフォーマンスが向上します。 http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312607
と::
から
これはhttp://stackoverflow.com/questions/303725/asp-net-application-state-vs-aのデュープです-static-object –
Ahh ok ...私はそれを見ませんでした...私はこの質問を閉じればいいですか? – 7wp