仓酷云

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

[学习教程] ASP网站制作之负载均衡情况下的ASP会话办理(转)

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

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

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

x
只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天创立交互式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已愈来愈成为企业级收集使用程序的选择,而负载</p>因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。
再见西城 该用户已被删除
沙发
发表于 2015-1-20 09:13:37 来自手机 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-29 06:21:45 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-5 23:08:20 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
谁可相欹 该用户已被删除
5#
发表于 2015-2-14 03:20:00 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
因胸联盟 该用户已被删除
6#
发表于 2015-3-4 04:22:28 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
只想知道 该用户已被删除
7#
发表于 2015-3-4 04:22:28 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
小魔女 该用户已被删除
8#
发表于 2015-3-11 16:33:25 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
变相怪杰 该用户已被删除
9#
发表于 2015-3-19 02:15:17 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
admin 该用户已被删除
10#
发表于 2015-3-27 04:10:47 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-4 14:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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