ASP.NET狀態(tài)管理提供有個重要的機制Session:http://www.cnblogs.com/zhaozhan/archive/2009/06/24/1509854.html。
ASP.NET提供另一對象Application來管理應用程序級別的信息,存儲在一個Application對象中的信息在ASP.NET應用程序的所有連接期間都是靜態(tài),Application對象中的信息也是以名值對的一個散列表的形式存儲。
設置Application的值的最好地方是在Global.asax文件中的Application_Start事件處理程序中。該事件每當應用程序第一次啟動時觸發(fā),該事件在Web應用程序的生命周期中只觸發(fā)一次,在隨后的Web用戶請求中不再被觸發(fā),知道應用程序或IIS被停止。
Application在使用時候直接使用Application的key或index就可以。如Application["UserCount"]=0;
在修改值為了保證數(shù)據(jù)的完整性必須鎖定和解鎖Application對象,因為應用程序的多個實例可能會在同一時間更新值,鎖定和解鎖使用Application對象的Lock()和Unlock()方法來完成。
Application.Lock();int userCount =(int)Application["UserCount"];userCount += 1;Application["UserCount"] = userCount;Application.UnLock();但是,使用這兩個方法也是性能的損失,因為任何其他ASP.NET應用程序實例在等待Application對象解鎖以訪問它時,基本上時被阻塞的,因此,如果在以讀/寫方式使用Application對象,確保在鎖定一個鍵值時執(zhí)行最少量的代碼。在鎖定中分離出其他線程或運行時間很長的查詢都是不明智的做法。