|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
帮助用户快速实现各种应用服务,ASP商有整合各方面资源的能力,可在短期内为用户提供所需的解决方案。例如,典型的ERP安装,如果要在客户端安装的话需要半年到二年的时间,但是美国的一些ASP商如USI和CORIO能在90—120天内提供ERP应用方案。session|session创立交互式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组件,就是能够处置这些
插件的。
仅当web局限内的第一次点击举行负载均衡
这类办法也称为前端负载均衡,它易于形貌,可是有大概不适于实行。为了完成真实的负载均衡,每次
哀求都要从头均衡用户。可是在年夜多半情形下,前端负载均衡就已充足满意年夜部分这类服务器保护的
撑持者了。
要完成这个目标,就只同意在局限内的第一次点击经由过程负载均衡器。每一个增添的页面负载都将用户坚持
在统一个服务器上。这就好像在代码中利用绝对路径而不是相对路径一样复杂。
<Formaction="http://www.myserver.com/mypage.asp"method=post>
 </p>想法是和程序员的想法不一样的.至于为什么.大家去想一想.跟心理学有关的 |
|