本篇内容介绍了“ASP.NET的Session State有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
为此ASP 的使用者不得不自己手工将会话信息以会话 ID 为主键同步到外部数据库中,以缓解类似问题。
而在 ASP.NET 中,因为设计时就考虑了这些问题,能够避免这些限制:1.支持进程外的状态管理,通过独立状态管理服务或 SQL Server 状态服务器管理会话状态2.支持不使用 Cookie 的状态维护,通过在 URL 中自动增加会话 ID 来避免使用 Cookie 3.通过独立的状态管理服务或SQL Server 状态服务器支持负载均衡时同步使用会话信息实现这些特性的正是上节提到的Session StateModule.InitModuleFromConfig 函数中,根据Session State 标记的 mode 属性选择的四种不同的状态管理器实现。
以下内容为程序代码:
<system.web>
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10" sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" cookieless="false" timeout="20" />
</system.web>
Off模式禁止会话管理,同时 ASP.NET 还允许通过在页面中以 Enable Session State 属性细粒度管理页面的会话支持状态以下内容为程序代码:
<%@ Page EnableSessionState=" True|False|ReadOnly" %>
InProc 模式兼容以前 ASP 的策略,在 ASP.NET 同一进程空间内实现基于内存的会话状态管理,速度最快但受到与 ASP 相同的限制;STATE SERVER 模式通过 ASP.NET 独立安装的 ASP.NET State Service 服务(aspnet_state.exe),以 stateConnectionString 指定的IP和端口响应会话状态服务;SQLServer 模式则通过 sqlConnectionString 指定的 SQL Server 服务器,以内存临时表(以 InstallSqlState.sql建库,使用 tempdb 内存数据库)或独立表(以InstallPersistSqlState.sql 监控,使用独立的 ASPState 库)维护会话状态。
这四种不同的状态管理器,在性能上据《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 还是每秒平均请求数来说,进程外状态管理器的性能都是可以令人接受的,当然还需要针对状态管理情况在编写代码时做相关优化。不过要使用进程外状态管理器,则保存在会话中的对象受到必须提高二进制序列化支持的限制。
从使用角度来看,状态管理器实际上都是由上节提到的 HttpSessionModule 建立管理,并通过 Http Session State 接口提供访问的。
“ASP.NET的Session State有什么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。