2011-07-22 3 views
0

私はGlobal.asax.Andに静的変数を定義し、私は自分のサイトのすべてのWebページでその変数を使用したいと思います。メモリとパフォーマンスに関するWebアプリケーションの静的変数の欠点は何ですか?

私は、Webアプリケーションのメモリとパフォーマンスに関して、グローバル変数の不利な点があることを知りたいだけです。

メモリとパフォーマンスに関して、グローバル静的変数に対してアプリケーションvaribaleの利点がありますか。

+1

これは多分興味深いものです。http://stackoverflow.com/questions/894036/what-is-better-static-variable-vs-asp-net-application-sessionそして実際には目的あなたは奉仕する必要がある – V4Vendetta

答えて

3

単純な値をキャッシュしようとしていると仮定すると、実際の不利な点はありませんが、実行しようとしていることに依存します。

コンパイル時に読み取り専用の値を保持するのに便利な場所が必要な場合は、おそらくconstを使用する方がよいでしょう。

単純なグローバル値(文字列としてのアプリケーションのバージョン番号など)をキャッシュしたい場合は、それを静的に置いても構いません。

アプリケーションオブジェクト(つまり、Global.asax)はではなく、シングルトンです。たとえば、IISがアプリケーションプールをリサイクルする時期であると判断した場合など、アプリケーションのインスタンスが複数存在する可能性があります。アプリケーションインスタンスは異なるAppDomainで実行されるため、静的変数の複数のインスタンスも存在します。

したがって、実行時に変更された情報を格納するためにアプリケーションオブジェクトに静的変数を使用しないでください。情報が要求を超えて保持されるという保証はありません。

関連する問題