溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ASP.NET的Session State有什么用

發(fā)布時間:2021-12-06 11:46:55 來源:億速云 閱讀:133 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“ASP.NET的Session State有什么用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

為此ASP 的使用者不得不自己手工將會話信息以會話 ID 為主鍵同步到外部數(shù)據(jù)庫中,以緩解類似問題。

而在 ASP.NET 中,因為設(shè)計時就考慮了這些問題,能夠避免這些限制:1.支持進程外的狀態(tài)管理,通過獨立狀態(tài)管理服務(wù)或 SQL Server 狀態(tài)服務(wù)器管理會話狀態(tài)2.支持不使用 Cookie 的狀態(tài)維護,通過在 URL 中自動增加會話 ID 來避免使用 Cookie 3.通過獨立的狀態(tài)管理服務(wù)或SQL Server 狀態(tài)服務(wù)器支持負載均衡時同步使用會話信息實現(xiàn)這些特性的正是上節(jié)提到的Session StateModule.InitModuleFromConfig 函數(shù)中,根據(jù)Session State 標記的 mode 屬性選擇的四種不同的狀態(tài)管理器實現(xiàn)。

以下內(nèi)容為程序代碼:

  1. <system.web> 

  2. <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" 
    stateNetworkTimeout="10" sqlConnectionString="data source=127.0.0.1;

  3. Integrated Security=SSPI" cookieless="false" timeout="20" /> 

  4. </system.web> 

Off模式禁止會話管理,同時 ASP.NET 還允許通過在頁面中以 Enable Session State 屬性細粒度管理頁面的會話支持狀態(tài)以下內(nèi)容為程序代碼:

<%@ Page EnableSessionState=" True|False|ReadOnly" %>

InProc 模式兼容以前 ASP 的策略,在 ASP.NET 同一進程空間內(nèi)實現(xiàn)基于內(nèi)存的會話狀態(tài)管理,速度最快但受到與 ASP 相同的限制;STATE SERVER 模式通過 ASP.NET 獨立安裝的 ASP.NET State Service 服務(wù)(aspnet_state.exe),以 stateConnectionString 指定的IP和端口響應(yīng)會話狀態(tài)服務(wù);SQLServer 模式則通過 sqlConnectionString 指定的 SQL Server 服務(wù)器,以內(nèi)存臨時表(以 InstallSqlState.sql建庫,使用 tempdb 內(nèi)存數(shù)據(jù)庫)或獨立表(以InstallPersistSqlState.sql 監(jiān)控,使用獨立的 ASPState 庫)維護會話狀態(tài)。

這四種不同的狀態(tài)管理器,在性能上據(jù)《Performance Tuning and Optimizing ASP.NET Appliation》一書的測試,相對值如下:以下為引用:Table 4-1: Normalized TTLB(Time to Last Byte) bySession State Mode (in Milliseconds per 100 Requests)

CONCURRENT BROWSERS MODE = OFF MODE = INPROC MODE = STATE SERVER MODE = SQLSERVER 1 7.81 4.54 8.27 8.47 5 28.28 20.25 27.25 29.29 10 89.38 46.08 77.29 85.11 Table 4-2: Average Requests per Second bySession State Mode CONCURRENT BROWSERS MODE = OFF MODE = INPROC MODE = STATE SERVER MODE = SQLSERVER 1 18.86 24.17 18.31 18.11 5 21.66 25.74 21.54 21.34 10 17.23 23.8 18.11 17.6可以看到,無論是從 TTLB 還是每秒平均請求數(shù)來說,進程外狀態(tài)管理器的性能都是可以令人接受的,當然還需要針對狀態(tài)管理情況在編寫代碼時做相關(guān)優(yōu)化。不過要使用進程外狀態(tài)管理器,則保存在會話中的對象受到必須提高二進制序列化支持的限制。

從使用角度來看,狀態(tài)管理器實際上都是由上節(jié)提到的 HttpSessionModule 建立管理,并通過 Http Session State 接口提供訪問的。

“ASP.NET的Session State有什么用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI