ASP.NET编程:ASP.NET的Session State
简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。为此ASP的利用者不能不本人手工将会话信息以会话ID为主键同步到内部数据库中,以减缓相似成绩。而在ASP.NET中,由于计划时就思索了这些成绩,可以制止这些限定:1.撑持历程外的形态办理,经由过程自力形态办理服务或SQLServer形态服务器办理会话形态2.撑持不利用Cookie的形态保护,经由过程在URL中主动增添会话ID来制止利用Cookie3.经由过程自力的形态办理服务或SQLServer形态服务器撑持负载平衡时同步利用会话信息完成这些特征的恰是上节提到的SessionStateModule.InitModuleFromConfig函数中,依据SessionState标志的mode属性选择的四种分歧的形态办理器完成。
以下内容为程序代码:
<system.web>
<sessionStatemode="InProc"stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10"sqlConnectionString="datasource=127.0.0.1;
IntegratedSecurity=SSPI"cookieless="false"timeout="20"/>
</system.web>
Off形式克制会话办理,同时ASP.NET还同意经由过程在页面中以EnableSessionState属性细粒度办理页面的会话撑持形态以下内容为程序代码:
<%@PageEnableSessionState="TrueFalseReadOnly"%>
InProc形式兼容之前ASP的战略,在ASP.NET统一历程空间内完成基于内存的会话形态办理,速率最快但遭到与ASP不异的限定;STATESERVER形式经由过程ASP.NET自力安装的ASP.NETStateService服务(aspnet_state.exe),以stateConnectionString指定的IP和端口呼应会话形态服务;SQLServer形式则经由过程sqlConnectionString指定的SQLServer服务器,之内存一时表(以InstallSqlState.sql建库,利用tempdb内存数据库)或自力表(以InstallPersistSqlState.sql监控,利用自力的ASPState库)保护会话形态。
这四种分歧的形态办理器,在功能上据《PerformanceTuningandOptimizingASP.NETAppliation》一书的测试,绝对值以下:以下为援用:Table4-1:NormalizedTTLB(TimetoLastByte)bySessionStateMode(inMillisecondsper100Requests)
CONCURRENTBROWSERSMODE=OFFMODE=INPROCMODE=STATESERVERMODE=SQLSERVER17.814.548.278.47528.2820.2527.2529.291089.3846.0877.2985.11Table4-2:AverageRequestsperSecondbySessionStateModeCONCURRENTBROWSERSMODE=OFFMODE=INPROCMODE=STATESERVERMODE=SQLSERVER118.8624.1718.3118.11521.6625.7421.5421.341017.2323.818.1117.6能够看到,不管是从TTLB仍是每秒均匀哀求数来讲,历程外形态办理器的功能都是能够使人承受的,固然还必要针对形态办理情形在编写代码时做相干优化。不外要利用历程外形态办理器,则保留在会话中的工具遭到必需进步二进制序列化撑持的限定。
从利用角度来看,形态办理器实践上都是由上节提到的HttpSessionModule创建办理,并经由过程HttpSessionState接口供应会见的,布局以下图:MSDN上的UnderpinningsoftheSessionStateImplementationinASP.NET一文十分具体的注释了几种分歧形态办理器的道理和利用,这儿就不罗嗦了。
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库) 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. 那么,ASP.Net有哪些改进呢? ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
页:
[1]