ASP.NET中application对象的用法(面试题)
ASP.NET中application對象的用法
本文導讀:Application對象是HttpApplicationState類的一個實例,Application狀態是整個應用程序全局的。Application對象在服務器內存中存儲數量較少又獨立于用戶請求的數據。由于它的訪問速度非??於抑灰獞贸绦虿煌V?#xff0c;數據一直存在,我們通常在Application_Start的時候去初始化一些數據,在以后的訪問中可以迅速訪問和檢索。
?
一、Application對象的理解
?Application對象在實際網絡開發中的用途就是記錄整個網絡的信息,如上線人數、在線名單、意見調查和網上選舉等。在給定的應用程序的多有用戶之間共享信息,并在服務器運行期間持久的保存數據。而且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,則不會引發該事件
????}
通過這些注釋我們可以看到,這些事件是整個應用程序的事件,和某一個頁面沒有關系。
二、Application對象的應用
?
1.使用Application對象保存信息
?
(1)、使用Application對象保存信息?
?
Application(“鍵名”)?=?值
或?Application(“鍵名”,值)
?
(2)、獲取Application對象信息
?
變量名?=?Application(“鍵名”)
或:變量名?=?Application.Item(“鍵名”)
或:變量名?=?Application.Get(“鍵名”)
?
(3)、更新Application對象的值
?
Application.Set(“鍵名”,?值)
?
(4)、刪除一個鍵
?
Application.Remove(“鍵名”,?值)
?
(5)、刪除所有鍵
?
Application.RemoveAll()
或Application.Clear()
?
2.有可能存在多個用戶同時存取同一個Application對象的情況
?
這樣就有可能出現多個用戶修改同一個Application命名對象,造成數據不一致的問題。
HttpApplicationState類提供兩種方法Lock和Unlock,以解決對Application對象的訪問同步問題,一次只允許一個線程訪問應用程序狀態變量。
?關于鎖定與解鎖
鎖定:Application.Lock()
訪問:Application(“鍵名”)?=?值
解鎖:Application.Unlock()
注意:Lock方法和UnLock方法應該成對使用。
可用于網站訪問人數,聊天室等設備
3.?使用Application事件
在ASP.NET應用程序中可以包含一個特殊的可選文件—Global.asax文件,也稱作ASP.NET應用程序文件,它包含用于響應ASP.NET或HTTP模塊引發的應用程序級別事件的代碼。?
三、Application總結
?在ASP.NET?2.0中,Application已經變得不是非常重要了。因為Application的自我管理功能非常薄弱,它沒有類似Session的超時機制。也就是說,Application中的數據只有通過手動刪除或者修改才能釋放內存,只要應用程序不停止,Application中的內容就不會消失。在下一節中,我們會看到,可以使用Cache實現類似Application的功能,同時Cache又有豐富而強大的自我管理機制。
總結一下Application的特性:
·?存儲的物理位置。服務器內存?!?存儲的類型限制。任意類型。
·?狀態使用的范圍。整個應用程序?!?存儲的大小限制。任意大小。
·?生命周期。應用程序開始的時候創建(準確來說是用戶第一次請求某URL的時候創建),應用程序結束的時候銷毀。
·?安全與性能。數據總是存儲在服務端,安全性比較高,但不易存儲過多數據。
·?優缺點與注意事項。檢索數據速度快,但缺乏自我管理機制,數據不會自動釋放。
?
?
轉載于:https://www.cnblogs.com/qiushuixizhao/p/5148489.html
總結
以上是生活随笔為你收集整理的ASP.NET中application对象的用法(面试题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【BZOJ2631】tree (LCT)
- 下一篇: PHP——面向对象