ASP.NETでのアプリケーションの詳細

4472 ワード

一、グローバルアプリケーションクラス
Applicationという単語から、Applicationステータスがアプリケーション全体のグローバルであることがわかります.ASP時代には一般的にApplicationに共通データを格納していましたが、ASP.NETでのApplicationの基本的な意味は変わりません.サーバメモリには、ユーザーから要求されたデータとは独立した数のデータが格納されます.アプリケーションが停止しない限り、アクセス速度が非常に速いため、データは常に存在します.スタート時にいくつかのデータを初期化し、今後のアクセスで迅速にアクセスし、取得することができます.
Global.asaxは、アプリケーションのグローバルを処理するためのイベントです.ファイルを開くと、いくつかのイベントの処理方法が定義されています.
 
  
void Application_Start(object sender, EventArgs e)
{
    //
}  
 
void Application_End(object sender, EventArgs e)
{
    // 
}      
 
void Application_Error(object sender, EventArgs e)
{
    //
}
 
void Session_Start(object sender, EventArgs e)
{
    //
}
 
void Session_End(object sender, EventArgs e)
{
    //
 
    // : Web.config sessionstate InProc , Session_End
 
    // StateServer SQLServer,
}

これらのコメントから、これらのイベントはアプリケーション全体のイベントであり、ページには関係ありません.
二、アプリケーションオブジェクトの応用
1.アプリケーションオブジェクトを使用して情報を保存する
(1)、Applicationオブジェクトで情報を保存する
Application(「キー名」)=値またはApplication(「キー名」,値)
(2)、アプリケーション対象情報の取得
変数名=Application(「キー名」)または:変数名=Application.Item(「キー名」)または:変数名=Application.Get(「キー名」)
(3)、Applicationオブジェクトの値の更新
Application.Set(「キー名」、値)
(4)、一つのキーを削除する
Application.Remove(「キー名」、値)
(5)、すべてのキーを削除
Application.RemoveAll()またはApplication.Clear()
2.複数のユーザが同一のアプリケーションオブジェクトに同時にアクセスする場合がある
これにより、複数のユーザが同じApplicationネーミングオブジェクトを変更し、データが一致しないという問題が発生する可能性があります.HttpApplicationStateクラスでは、アプリケーションのステータス変数へのアクセスを一度に1つのスレッドのみ許可する、Applicationオブジェクトへのアクセス同期の問題を解決するための2つの方法LockとUnlockが提供されます.
ロックとロック解除について
ロック:アプリケーション.ロック()アクセス:Application("キー名")=値ロック解除:Application.Unlock()注意:LockメソッドとUnLockメソッドはペアで使用する必要があります.Webサイトのアクセス数、チャットルームなどのデバイスに使用できます
3.アプリケーションイベントの使用
ASP.NETアプリケーションには、Globalという特殊なオプションファイルを含めることができます.asaxファイル、ASPとも呼ぶ.NETアプリケーションファイルは、ASPに応答するためのファイルを含む.NETまたはHTTPモジュールによるアプリケーションレベルイベントのコード.
三、アプリケーション統計サイトのアクセス
Applicationを使用してWebサイトのアクセス状況を統計したいとします.
・ページクリック数.同じユーザが複数回ページをクリックしたかどうかにかかわらず、ページは1回+1クリックされます.
・ユーザーアクセス数.1人のユーザ+1が来て、1人のユーザが複数のページを開いてもこの数字には影響しません.
まずApplication_Startでは2つの変数を初期化します.
 
  
void Application_Start(object sender, EventArgs e)
{
    //
    Application["PageClick"]=0;
    Application["UserVisit"]=0;
}

ユーザアクセス数はセッションによって判断されるので、セッション_スタート時にこの変数を追加します.
 
  
void Session_Start(object sender, EventArgs e)
{
    Application.Lock();
    Application["UserVisit"]=(int)Application["UserVisit"]+1;
    Application.UnLock();
}

Applicationの使い方とSessionの差は少ないことがわかります.唯一注意しなければならないのは、Applicationの役割範囲がアプリケーション全体であり、同じ時間にApplicationにアクセスして混乱するユーザーが多い可能性があるため、Applicationを変更するときはまずApplicationをロックし、変更が完了してからロックを解除する必要があります.
ページクリック数はページPage_ロードの時に修正します.
 
  
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Application.Lock();
        Application["PageClick"] = (int)Application["PageClick"] + 1;
        Application.UnLock();
        Response.Write(string.Format(" :{0}
", Application["PageClick"]));
        Response.Write(string.Format(" :{0}
", Application["UserVisit"]));
    }
}

四、アプリケーションのまとめ
ASP.NET 2.0では、Applicationはあまり重要ではありません.Applicationの自己管理機能が非常に弱いため、Sessionのようなタイムアウトメカニズムはありません.つまり、アプリケーション内のデータは、手動で削除または変更してこそメモリを解放することができ、アプリケーションが停止しない限り、アプリケーション内の内容は消えません.次のセクションでは、Cacheを使用してApplicationのような機能を実現できるとともに、Cacheには豊富で強力な自己管理メカニズムがあります.
Applicationの特性をまとめてみましょう.
・格納されている物理的位置.サーバメモリ.
・格納タイプ制限.任意のタイプ.
・状態使用の範囲.アプリケーション全体.
・格納のサイズ制限.任意のサイズ.
・ライフサイクル.アプリケーションが開始されたときに作成され(正確にはユーザが初めてURLを要求したときに作成され)、アプリケーションが終了したときに破棄されます.
・安全と性能.データは常にサービス側に格納され、セキュリティは比較的高いが、あまりデータを格納しにくい.
・メリットとデメリットと注意事項.データの取得速度は速いが、自己管理メカニズムが欠けており、データは自動的に解放されない.