11.1  Application对象

Application对象生存期和Web应用程序生存期一样长,生存期从Web应用程序网页被访问开始,HttpApplication类对象Application被自动创建,直到没有一个网页被访问时结束,Application对象被自动撤销。因此Application对象中的变量也有相同生存期,并且变量可以被Web应用程序中的所有网页访问。因此,可以在Application对象中建立一些全局的公用变量,由于存储在Application对象中的数值可以被应用程序的所有网页读取,所以Application对象的属性也适合在应用程序的网页之间传递信息。Application对象主要有以下用途:
l    存储记录在线人数或访问网站总人数的变量。
l    存储网站共用最新消息,供所有网页更新。
l    记录网站中个网页同一条广告被点击的次数或时间。
l    存储供所有网页使用的数据库数据。
l    不同用之间通讯,例如多用户聊天室,多用户游戏等
本节首先介绍Application对象的用法,然后介绍记录访问网站总人数的实现方法。

11.4.1      Application对象属性

虽然Application对象没有内置的属性,但我们可以使用以下句法设置用户定义的属性也可称为集合:Application("属性/集合名称")=值,例如,Application("MyVar")="Hello"。用以下语句取出数据:string s= Application("MyVar")。

11.4.1      方法

Application 对象有两个方法,它们都是用于处理多个用户对存储在Application中的数据进行写入的的同步问题。由于存储在Application对象中的数值可以被应用程序的所有网页读取,因此一个用户在修改这个变量时,不允许其它用户修改,这两个方法就是解决这个问题的。
l L ock 方 法
Lock 方法阻止其他客户修改存储在 Application 对象中的变量,以确保在同一时刻仅有一个客户可修改和存取 Application 变量。如果用户没有明确调用 Unlock 方法,则服务器将在 .asp 文件结束或超时后即解除对 Application 对象的锁定。
l Unlock 方法
和Lock方法相反,Unlock方法允许其他客户修改Application对象的属性。下例介绍一个计数器变量的使用方法。
Application.Lock;
Application["counter"]=(Int32)Application["counter"]+1;
Application.UnLock;

11.4.1      事件

l Application_OnStart事件
第一个浏览器访问Web应用程序网页时,产生的事件。
l Application_OnEnd事件
没有浏览器访问时Web应用程序网页时,产生的事件。
Application_OnStart和Application_OnEnd事件的处理过程必须写在global.asax文件之中。

11.4.2      例子:显示访问网站总人数

(1)  建立一个主页文件Default.aspx如下:
<html>
<script language="c#" runat=server>
void Page_Load(Object src,EventArgs e)
{
if(!Page.IsPostBack)//如果用户单击刷新按钮,计数器不加1
{
int num;
Application.Lock;
Application["counter"]=(Int32)Application["counter"]+1;
num=(Int)Application["counter"];
Application.UnLock;
label1.Text=Convert.ToString(num);
}
}
</script>
<body>
<form runat=server>
<asp:Label );
w.Write(num.ToString());
w.Close();
}
</script>
(7)  再一次访问dault.aspx网页,看是否已解决以上提出的问题。这里还有一个问题,如果用用如下URL访问网页:http://Localhost/Other.aspx,这样计数器就不能计数,解决的方法见Session 对象一节。

相关文章: