仓酷云

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

[学习教程] ASP编程:负载均衡情况下的ASP会话办理

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

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

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

x
asp,你就只能等着微软给你解决,它不乐意你就只好悲催。而且asp跑在windows服务器上,windows服务器跟linux比起来简直弱爆了!创立交互式web页面时最年夜的应战之一是保持用户的形态,一个站点大概想记着你是谁、在n页之前你点击了甚么、在这最初一次做了些甚么、如今即刻要向你显现甚么。完成这些功效的路子有很多,如查询字符串、提交表单或cookies,最壮大的一种是ASP的Session工具。
原文出处:http://www.asptoday.com/articles/20000118.htm当用户第一次抵达某站点,他/她被赐与一个HTTPcookie格局的SessionID(是一个只读属性,
为每一个用户前往session辨认号)。然后服务器能够在session汇合中跟踪一整群的变量,经由过程
与用户的sessioncookie相婚配来坚持每一个用户有一个特定变量。只需用户在服务器上坚持活泼,
session变量就保持它的形态。一个session变量的默许无效工夫是20分钟,大概是每当用户封闭
扫瞄器,这时候不管session_OnEnd部分是甚么内容,global.asa文件都运转。


以上报告的关头是“在服务器上坚持激活形态”。每一个session变量都在收集服务器上设置,并坚持在
当地内存中。以是,假如你在一个web局限内利用负载均衡怎样办?(负载均衡的先容请见
msdn文章‘ASPandWebSessionManagement’)。对真实的负载均衡来讲,每当寓居于服务器
上的用户点击一个毗连时,它就改动服务器的形态,每当扫瞄一个新页面时都潜伏地丧失他们的
session信息。

假如你发明本人是在如许的情况下编写代码--大概你嫌疑你的站点终极是负载均衡的--你有4种办法
来办理这个成绩。

○完整不利用session。
○利用一时cookies。
○购置第三方组件来处置session办理。
○仅对web局限内的第一次点击举行负载均衡。

本文将会商这四种选择,并注释它们分离在什么时候何地最合用。

基本不利用sessions

明显,饶过sessions办理这个成绩的一个路子就是基本不利用sessions变量。可是你仍旧受困于
形态坚持的成绩。你可使用最复杂的办法跟踪用户,而不必写客户机。

一种不平安的办法是利用扫瞄器查询字符串,或用埋没值举行表单置进,以利用户坚持活泼形态。
这将同意你给他们一个用户id,并将变量存储在一个一切的web服务器都能抵达的中央。好比说
我坚持了变量ShipToZipCode、TypeOfCustomer和CustomerEmail。能够如许写:

<formaction="/nextpage.asp"method="post">
ItemNumber:<inputtype=textname="ItemNumber"><br>
Quantity:<inputtype=textname="Quantity"><br>
UnitCost:<inputtype=textname="UnitCost"><br>
<inputtype=hiddenvalue="ABXXXKJR8JSDFI12KJIL2H75CX45X2"name="sessionid">
<inputtype=submitvalue="postform">
</form>

然后,在nextpage.asp上,能够做以下事情:

Setconn=Server.CreateObject(ADODB.Connection)
SetSessionRS=conn.execute("SelectShipToZipCode,TypeOfCustomer,_CustomerEmailfromTblSessionwhereSessionID="&request.form("sessionid"))
ShipToZipCode=SesssionRs("ShipToZipCode")
TypeOfCustomer=SesssionRs("TypeOfCustomer")
CustomerEmail=SesssionRs("CustomerEmail")

如许经由过程将一切的"session"信息存储在数据库中,可使这三个变量在每页上都坚持活泼。确保
用户id的值很难猜到,这很主要。当会见第一页时,将分派给用户的sessionID存储为用户名。当用户
分开这一页时能够思索扫除这个数据,无效地从头天生ASPsession工具。这能够手工完成,大概用
一个限时程序将数周以上的纪录删除。



利用一时Cookies

关于出格的非敏感数据,间接向客户机中写进信息是成心义的。好比说,假如我的站点只利用了一个
变量来跟踪用户的ZIP码来失掉用户在外地的交通纪录,那末以HTTPcookie的情势将用户的ZIP码
写进他们的呆板应当不会发生甚么伤害。由于你能够将cookie写成扫瞄器封闭时生效,就能够使它们
仿照一个session变量的功效,也能够使他们是耐久的,幸亏用户下一次会见时记着他。

用Request工具Cookie的值能够为服务器所用。哀求Cookie的值,然后将值带出去。以是在我们下面
的例子中,能够如许做:

ShipToZipCode=Request.Cookies("SessionCookie")("ShipToZipCode")
TypeOfCustomer=Request.Cookies("SessionCookie")("TypeOfCustomer")
CustomerEmail=Request.Cookies("SessionCookie")("CustomerEmail")

你不能不把这些安排在每一个页面的顶部,可是假如用户把三个cookies都设置了,那末每页都能够
存取和利用这些用户特定的变量。你还能够在一个cookie中设置三个变量,请看KenBaumbach的文章
CookieBasicswithASP,内里有设置变量的更多信息。

假如你以为用户大概在扫瞄器上使Cookie有效,这类办法就不合用。可是愈来愈多的站点请求利用
cookies,web用户也愈来愈纯熟了。有大概绝对很少的用户会使cookies有效,可是这要在实行
这一办法之行进行思索。
固然下面的办法一定能见效,可是它们减弱了ASP的功效,由于它限定了个中一个关头组件--Session
工具的利用。要制止由负载均衡招致的这类限定,持续利用sessions的一种办法是购置一个第三方
组件,能够比IIS更好地处置Session。

在本文中,我不想对照各类第三方组件的优弱点。可是我传闻有一个组件事情得挺好,是SoftArtisans
供应的,叫做SA-SessionPro。它利用NT文件体系存储用户的信息,全部收集局限内的服务器都能够
利用。别的第三方组件创立“session引擎”把收集服务器和session办理器分别。如许,每次用户
都能够被重定向到不异的session引擎,同时也对服务器自己的点击举行负载均衡。

另外一个可选择的第三方组件是Microsoft的成员服务器。它与Microsoft的站点服务器,它同意一个
站点处置形态保护之外的成绩。在BillPitzer的文章‘Movingyour"Anonymous"visitorsto
registeredstatususingSiteServerandMembershipDirectoryAuthentication’中有更多的
信息。

因为ASP已愈来愈成为企业级收集使用程序的选择,而负载均衡同样成为这些使用程序乐成的最年夜威逼,
在市场上会呈现愈来愈多的第三方组件。ASP自己就是服务器工具或ActiveX组件,就是能够处置这些
插件的。
</p>Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
若相依 该用户已被删除
沙发
发表于 2015-1-20 09:33:13 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
简单生活 该用户已被删除
板凳
发表于 2015-1-29 10:47:00 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
地板
发表于 2015-2-6 00:25:46 | 只看该作者
哪些内置对象是可以跳过的,或者哪些属性和方法是用不到的?
只想知道 该用户已被删除
5#
发表于 2015-2-14 15:46:17 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
不帅 该用户已被删除
6#
发表于 2015-3-4 07:40:50 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
再现理想 该用户已被删除
7#
发表于 2015-3-11 17:56:31 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
admin 该用户已被删除
8#
发表于 2015-3-19 05:29:59 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
变相怪杰 该用户已被删除
9#
发表于 2015-3-27 08:10:43 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-1 22:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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