使用Application对象

Application对象拥有与Application所有相关的集合，方法，以及事件。下面的部分你将学会怎样使用Application对象来创建application变量和application事件。

对Application变量的介绍

一个application变量包含的数据可以在整个application中被所有用户享用。Application对象包括任何类型，包括队列和对象。一个application变量和一个Session变量区别有以下两点：

■和Session不同的是，Application变量不需要Cookies。网站不需要利用Application变量来跟踪用户进程。这就意味着使用起来很安心，可以适应任何浏览器。

■和一个Session变量不同的是，application变量可以被多个用户共享。从一个用户接受到的application变量可以传递给另外的用户。

注意

对Session的了解在第16章。

下面是利用Application的普通应用：

■一个application变量可以用来在每个主页上显示瞬态信息，例如，你可以利用application变量来对于每一个主页进行当日新闻的更新。

■Application可以用来记录广告条被点击的时间和次数。“参看第21章”

■Application可以从数据库中读取数据，例如，你可以从你的网站的数据库中接受销售品目录然后利用application变量显示在多个主页上。

■一个Application变量可以用来统计目前上站人数，可以参见后面的小节。

■一个application变量可以用于网站上不同用户间的通讯，你这样就可以创建多用户游戏以及多用户聊天室，可以参看后面聊天室的应用小节。

创建和读取Application变量

其实这部分相当简单，因为读者您读到这里已经有相当基础了，创建读取过程和以往的Session变量没什么区别，见下面的例子应用：

<HTML>

<HEAD><TITLE>Application示例</TITLE></HEAD>

<BODY>

<%

Application(

“Greeting”)=”Welcome!”

%>

<%=Application(

“Greeting”)%>

</BODY>

</HTML>

在这个示例中，一个新的名字为Greeting的application变量被创建，赋值为

”Welcome!”。然后这个变量值”Welcome!”显示在浏览器上。

一旦变量被赋值，它就可以在任何ASP文件中显示出来，即使是其他用户调用。例如，这时候另外一个用户调用下面的ASP文件，也可以显示

”Welcome!”信息：

<HTML>

<HEAD><TITLE>另外一页</TITLE></HEAD>

<BODY>

<%=Application(

“Greeting”) %>

</BODY>

</HTML>

很重要的需要理解的是，由于Application变量是对于多用户共享的，因此与Session变量有着本质的区别。同时application变量不会因为某一个甚至全部用户离开就消失，一旦建立了application变量，那么它就会一直存在到网站关闭或者这个application被卸载。这经常可能是几周或者几个月。

由于application变量创建时不会自己消亡，因此你就要特别小心的使用，这可是占用内存的，你可要斟酌使用以免降低服务器对其他工作的响应速度。

注意

Application变量终止的情况有三种，服务被终止，Global.asa被改变，或者该Application被卸载。

为了更好的了解多用户共享这个概念，，我们拿出下面这个脚本例子：

<%

Randomize

If INT(2*RND)=1 THEN

Application(

“FavoriteColor”)=”Blue”

Else

Application(

“FavoriteColor”)=”Red”

END IF

%>

很容易理解的是，如果将Application换成Session，那么对于每一个单独用户来说，值很可能是不一样的，但是这里面由于是Application，那么不管多少个用户调用该脚本，大家的该变量都是一样的，即使后来的访问者调用时颜色与前面人调用的不一样，那么由于这种共享变量，自然对于其他人来说就相当于进行变量值的改变。不过，现在细心的读者也许会发现这里面有些问题，即：如果多人同时调用，那么岂不是要乱了。例如下面这个例子：假如你正在使用一个application来记录一个广告条的点击次数，如果两个人正在同时点击，那么冲突怎么办？

<%

NumClicks=Application(

“BannerClicks”)

NumClicks=NumClicks+1

Application(

“BannerClicks”)=NumClicks

%>

可以看出，每一次点击，该变量值加1，但是如果这个脚本被同时进行，即多人同时点击，幸好有两个Application方法专门应付这种问题，分别是Lock方法和Unclock方法，用来暂时防止其他用户对application变量的改变，那么前面的例子正确形式应该如下：

<%

Application.Lock

NumClicks=Application(

“BannerClicks”)

NumClicks=NumClicks+1

Application(

“BannerClicks”)=NumClicks

Application.UnLock

%>

脚本的第一行将application进行lock操作，那么其他用户就无法对application变量进行修改直到Unclock操作或者该ASP文件执行结束。

请注意你不能针对个别变量进行Lock操作，也就是说，要不全都Lock，要不全都不。前面的脚本其实也就是防止用户修改该Application的所有变量。

了解Lock方法注意不是永远不让其他用户进行Application变量的修改，而是让修改过程连续有序，防止冲突。