仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 438|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网站制作之ASP会话功效具体注释

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。  1、会话形态的功效

  HTTP是一个无形态的协定,以是它不主动唆使一个哀求序列是不是都来自不异的客户端,乃至不唆使单个扫瞄器实例是不是仍活泼地检察某个页或站点。而利用ASP.NET内置的会话形态功效,可使用我们做到

  1、对从单个扫瞄器客户端到服务器上逻辑使用程序会话的哀求举行主动辨认和分类。

  2、将会话局限的数据存储在服务器上以供跨多个扫瞄器哀求利用。

  3、激发得当的可在使用程序代码中处置的会话保存期办理事务(Session_OnStart、Session_OnEnd等)

  2、会话形态的标识

  在创立会话时,服务器会为每个会话天生一个独自的标识。该标识用120位的SessionID字符串暗示,该字符串只包括URL中所同意利用的ASCII字符。SessionID值是利用包管独一性和随机性的算法天生的,个中包管独一性的目标是确保会话不抵触,包管随机性的目标是确保怀有歹意的用户不克不及利用新的SessionID来盘算现有会话的SessionID。

  3、会话形态的存储体例

  会话形态有三种存储体例

  1、历程内会话形态形式(Inproc):当我们新建一个WEB程序后默许的接纳的历程内会话形态形式,这也是人人所广泛接纳的形式。在这类形式下会话形态存储在当地的ASP.NET帮助历程中,能够说到今朝为止,历程内会话形态形式多是最快的会见选项。但会话中存储的数据越多,Web服务器所损耗的内存就越多,如许会潜伏地增添功能下降的风险。

  2、.NET形态服务器形式(StateServer):会话形态存储在远程历程中(比方,名为aspnet_state.exe的indowsNT服务中)

  3、SQL形式(SQLServer):会话形态存储到由SQLServer办理的公用数据库表中。

  .NET形态服务器形式和SQL形式都能够称为历程外会话形式,当贮存数据时,必要将数据序列化贮存到内部储蓄库,当读取和数据时,必要将数据反序列化,复制到当地会话辞书中,以是哀求招致功能下落了15%(历程外)到25%(SQLServer)。注重这只是一种大略的估量。可是在历程外存储计划中,会话形态存活的工夫较长,使使用程序的功效更壮大,由于它能够避免Microsoft?Internet信息服务(IIS)和ASP.NET失利。经由过程将会话形态与使用程序相分别,您还能够更简单地将现有使用程序扩大到WebFarm和WebGarden系统布局中。别的,会话形态存储在内部历程中,从基本上打消了因为历程轮回而招致的周期性数据丧失的风险。

  4、会话形态的设置

  会话形态的设置是经由过程设置Web.config文件的<sessionState>节来完成的。上面先容一下三种会话形态的详细设置办法

  1、历程内形式

  历程内形式是默许的会话形态形式。若要利用历程内形式,请将<sessionState>元素的mode属性设置为Inproc。

  上面显现了历程内形式的一个设置设置示例。

<configuration>
<system.web>
<sessionStatemode="Inproc"
cookieless="false"
timeout="20"/>
</sessionState>
</system.web>
</configuration>
  2、形态服务器形式

  若要利用形态服务器,必需起首确保ASP.NET形态服务运转在用于会话存储的远程服务器上。此服务与ASP.NET和VisualStudio.NET一同安装在以下地位:

systemrootMicrosoft.NETFrameworkversionNumberaspnet_state.exe

  然后,在使用程序的Web.config文件中,将<sessionState>元素的mode属性设置为StateServer。最初,将connectionString属性设置为tcpip=serverName:portNumber。

  上面是形态服务器形式的一个设置设置示例。

<configuration>
<system.web>
<sessionStatemode="StateServer"
stateConnectionString="tcpip=dataserver:42424"
cookieless="false"
timeout="20"/>
</sessionState>
</system.web>
  3、SQLServer形式

  若要利用SQLServer,起首在将存储会话形态的SQLServer盘算机上,运转InstallSqlState.sql或InstallPersistSqlState.sql。两个剧本均创立一个名为ASPState的数据库,它包括多少存储历程。

  两个剧本间的差别在于安排ASPStateTempApplications和ASPStateTempSessions表的地位。InstallSqlState.sql剧本将这些表增加到TempDB数据库,该数据库在盘算机从头启动时将丧失数据。相反,InstallPersistSqlState.sql剧本将这些表增加到ASPState数据库,该数据库同意在盘算机从头启动时保存会话数据。

  默许情形下,两个剧本文件均安装鄙人面的地位:

systemrootMicrosoft.NETFrameworkversionNumber

  然后,在使用程序的Web.config文件中,将<sessionState>元素的mode属性设置为SQLServer。最初,将sqlConnectionString属性设置为IntegratedSecurity=SSPI;datasource=serverName;。

  上面显现了SQLServer形式的一个设置设置示例。

<configuration>
<system.web>
<sessionStatemode="SQLServer"
sqlConnectionString="IntegratedSecurity=SSPI;datasource=dataserver;"
cookieless="false"
timeout="20"/>
</sessionState>
</system.web>
</configuration>
  在SQLServer形式中,也能够将会话形态设置为在妨碍转移聚集中事情。妨碍转移聚集是两个或更多不异的冗余Web服务器,它们将会话数据存储在一台独自的盘算机上的SQLServer数据库中。假如一个Web服务器呈现妨碍,聚集中的另外一个服务器会接受它的事情,为哀求供应服务,会话数据不会丧失。

  若要设置妨碍转移聚集,请将Web服务器的Web.config文件中的<machinekey>元素设置为不异的值。

  然后将Web服务器的SQL毗连字符串设置为指向盘算机上存储会话数据的SQLServer数据库。

  5、会话形态的会见

  你能够间接经由过程Session汇合来完成对会话形态的会见。为了与ASP的初期版本兼容,还能够经由过程使用程序工具上的Session.Contents属性来完成对会话形态的会见。

  上面的示例显现在第一个网页将两个值写进Session汇合,然后再在第二个网页读取Session汇合。注:此处省略了页代码。

  第一个网页,将值写进Session汇合

dimnameasstring="a"
dimidasinteger="1"
session("name")=name
session("id")=id
第二个网页,从Session汇合猎取值
dimnameasstring=session("name")
dimidasinteger=session("id")
猎取猎取会话形态汇合中的项数
dimiasinteger=session.count
  注重,在历程内形式,未产生真实的序列化和反序列化,以是工具作为各自类的举动实例存储在会话形态中。

  而在历程外会话形式,由于利用了序列化和反序列化,以是你要依据情形对数据范例举行转换。

  如对日期值实行序列化操纵,日期应为Int64范例。

  6、会话保存期办理事务

  会话保存期办理事务有两个Session_OnStart事务和Session_OnEnd事务,你能够在Global.asax.vb文件中对它们举行设置

  1、Session_OnStart事务

  当从单个扫瞄器客户端毗连到服务器上时,就会触发Session_OnStart事务,它标记着会话的入手下手,在今后的扫瞄过程当中,将不在触发该事务,除非此次会话超时或被保持。Session_OnStart事务是设置会话期变量的最好机会,由于在会见任何页之前城市先设置它们。

  示例:上面的示例是对照经常使用到的统计在耳目数的Session_OnStart事务代码:

SubSession_Start(ByValsenderAsObject,ByValeAsEventArgs)
当事务产生时,将在线用户的人数加1
Application("usercount")=Application("usercount")+1
EndSub
  2、Session_OnEnd事务

  Session_OnEnd事务在会话被保持或超时产生,它标记着事务的停止。但请注重,只要InProc形式撑持该事务。你能够经由过程Web.config文件的<sessionState>节的timeout属性来指定超不时限,假如用户在该超不时限以内(以分钟为单元,默许是20分
钟)不革新或哀求网页,则该会话将停止。能够使用Session_OnEnd事务做一些清算事情。

  示例:上面的示例是对照经常使用到的统计在耳目数的Session_OnEnd事务代码:

SubSession_End(ByValsenderAsObject,ByValeAsEventArgs)
Application("usercount")=Application("usercount")-1
EndSub
  有关会话形态的详细使用实例见:

  复杂的论坛程序
国内有些大的CRM厂商的ASP就写得不错.无论是概念还是它里面用JAVASCRIPT的能力.并不是说现在的程序员用了ASP.NET来写程序就可以说自己高档了
海妖 该用户已被删除
沙发
发表于 2015-1-18 21:46:22 | 只看该作者
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-26 07:06:17 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
再现理想 该用户已被删除
地板
发表于 2015-2-4 13:54:34 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
老尸 该用户已被删除
5#
发表于 2015-2-10 01:34:11 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
乐观 该用户已被删除
6#
发表于 2015-2-28 14:56:10 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
再见西城 该用户已被删除
7#
发表于 2015-3-10 00:28:06 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
活着的死人 该用户已被删除
8#
发表于 2015-3-17 04:07:48 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
深爱那片海 该用户已被删除
9#
发表于 2015-3-23 18:43:07 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 07:41

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表