Application 統計在線人數

MVC 統計在線人數:安全

protected void Application_Start()
{
    Application["OnLineUserCount"] = 0;
    AreaRegistration.RegisterAllAreas();

    RegisterGlobalFilters(GlobalFilters.Filters);
    RegisterRoutes(RouteTable.Routes);
}

protected void Session_Start(object sender, EventArgs e)
{
    Application.Lock();
    Application["OnLineUserCount"] = Convert.ToInt32(Application["OnLineUserCount"]) + 1;
    Application.UnLock();
}

protected void Session_End(object sender, EventArgs e)
{
    Application.Lock();
    Application["OnLineUserCount"] = Convert.ToInt32(Application["OnLineUserCount"]) - 1;
    Application.UnLock();
}

 

1、Application對象的理解服務器

 

Application對象在實際網絡開發中的用途就是記錄整個網絡的信息,如上線人數、在線名單、意見調查和網上選舉等。在給定的應用程序的多有用戶之間共享信息,並在服務器運行期間持久的保存數據。並且Application對象還有控制訪問應用層數據的方法和可用於在應用程序啓動和中止時觸發過程的事件。網絡

Global.asax(一般咱們不更名)是一個用來處理應用程序全局的事件。打開文件,系統已經爲咱們定義了一些事件的處理方法。session

            
    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,則不會引起該事件
    }

        

 

經過這些註釋咱們能夠看到,這些事件是整個應用程序的事件,和某一個頁面沒有關係。性能

 

2、Application對象的應用網站

 

1.使用Application對象保存信息spa

 

(1)、使用Application對象保存信息 線程

 

Application(「鍵名」) = 值code

或 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模塊引起的應用程序級別事件的代碼。

 

 

3、Application總結

 

在ASP.NET 2.0中,Application已經變得不是很是重要了。由於Application的自我管理功能很是薄弱,它沒有相似Session的超時機制。也就是說,Application中的數據只有經過手動刪除或者修改才能釋放內存,只要應用程序不中止,Application中的內容就不會消失。在下一節中,咱們會看到,能夠使用Cache實現相似Application的功能,同時Cache又有豐富而強大的自我管理機制。

 

總結一下Application的特性:

 

·      存儲的物理位置。服務器內存。

·      存儲的類型限制。任意類型。

·      狀態使用的範圍。整個應用程序。

·      存儲的大小限制。任意大小。

·      生命週期。應用程序開始的時候建立(準確來講是用戶第一次請求某URL的時候建立),應用程序結束的時候銷燬。

·      安全與性能。數據老是存儲在服務端,安全性比較高,但不易存儲過多數據。

·      優缺點與注意事項。檢索數據速度快,但缺少自我管理機制,數據不會自動釋放。

相關文章
相關標籤/搜索