■第一方案
首先我们开始第一个方案的实作,由于是激活时初始化 Application,我们当然要从 Global.asa中着手:
已经完成初始化了,但如何使用呢?我们只要在使用者登入的地方,把原本使用 Session 储存的资料,如帐号、登入时间,改成我们建立好的 Application 对象中就可以了:
'寻找未被使用的空间
For i = 1 To Application("ClientMax")
If Application("User_Status_" & i) = 0 Then
'使用者暂时编号
Session("Index") = i
'锁定
Application Application.Lock
'设成已使用的状态
Application("User_Status_" & i) = 1 '放入变量数据
Application("User_Account_" & i) = Account
Application("User_Logtime_" & i) = Now()
'解除锁定
Application.Unlock
Exit For
End If
Next
要取得使用者的相关变量数据则就像下面的做法:
Response.Write(Application("User_Account_" & Session("Index"))
你可能会发现,不是说不要使用 Session 吗?那为什么上面的原始码中还有 Session 的存在?前面也说过,这替代方案并不能完全代替掉 Session,浏览器并不是一直和 Server 处于联机状态的,读取完页面就断线,那我们要怎么知道下次联机的还是同一个人呢?这时候就必须要靠 Session,我们给使用者一组实时的编号,此编号就是使用者于 Application 上变量空间的号码,你可以想象成银行中有很多的保险箱,你拥有一支钥匙,而钥匙上有编号,钥匙上的编号可以让行员带领你去你自己的保险箱。此方法尚还有改进之处,但对小型的应用程序已经是很够用了。
