Application对象
Application对象是HttpApplictionState类的一个实例。该对象可以在多个请求、连接之间共享公用信息,在整个应用程序生存周期中,Application对象都是有效的,可以在应用中的所有页面对其进行存取,就像使用全局变量一样。
Application对象的特点
- 存储位置:该对象存储于服务器内存中;
- 生命周期: Web应用收到第一次用户请求时创建,直到Web应用或者服务器重启时销毁,在生命周期内不会自动释放。
Application对象的使用
- Contents集合的存取
Application对象中包含有一个公开的 Contents 集合,用来保存并共享用户的应用程序信息,语法格式如下:
Application.Contents[Key]=Value
其中Key值为Contents集合的索引,相当与数组的下标。Contents集合是Application对象的默认的集合,书写时可以将Contents省略,格式如下:
Application[Key] = Value
- Lock和Unlock方法
因为Application对象是共享的,多个用户同时向Application对象写入数据时,可能会造成的写入数据不一致的问题;为了确保某一时刻只能有一个用户对该对象进行修改,引入了Lock和Unlock方法。语法格式如下:
Application.Lock ( ) | Application.Unlock()
如下的例子:
Application.Lock(); //同步,避免同时写入
Application["counter"]=(int)Application["counter"]+1; //建立一个会话,该全局变量加1
Application.UnLock(); //同步结束
在修改信息之前,先使用Lock方法将Application对象锁定;完成信息修改后,再使用Unlock方法将Application对象解锁。
- Remove方法和Clear方法
Application对象物理存储在服务器内存中,数据不会自动释放;通过Remove方法和Clear方法,可以手动对该对象占用的资源进行释放,语法如下:
Application.Remove( Key )
Application.Clear()
Clear:清除全部的Application 对象变量。
Remove方法删除Application 对象集合中名称为Key的变量,Clear方法清除Application对象中的所有变量。
下面我们将通过一个常见的站点访问统计,来尝试使用Application对象,这里使用了Global.asax,在application开始时初始化计数;篇幅所限,例子放到测试用例里。