ASP.NET状态管理——Application
ASP.NET状态管理提供有个重要的机制Session:http://www.cnblogs.com/zhaozhan/archive/2009/06/24/1509854.html。
ASP.NET提供另一对象Application来管理应用程序级别的信息,存储在一个Application对象中的信息在ASP.NET应用程序的所有连接期间都是静态,Application对象中的信息也是以名值对的一个散列表的形式存储。
设置Application的值的最好地方是在Global.asax文件中的Application_Start事件处理程序中。该事件每当应用程序第一次启动时触发,该事件在Web应用程序的生命周期中只触发一次,在随后的Web用户请求中不再被触发,知道应用程序或IIS被停止。
Application在使用时候直接使用Application的key或index就可以。如Application["UserCount"]=0;
在修改值为了保证数据的完整性必须锁定和解锁Application对象,因为应用程序的多个实例可能会在同一时间更新值,锁定和解锁使用Application对象的Lock()和Unlock()方法来完成。
Application.Lock(); int userCount =(int)Application["UserCount"]; userCount += 1; Application["UserCount"] = userCount; Application.UnLock();但是,使用这两个方法也是性能的损失,因为任何其他ASP.NET应用程序实例在等待Application对象解锁以访问它时,基本上时被阻塞的,因此,如果在以读/写方式使用Application对象,确保在锁定一个键值时执行最少量的代码。在锁定中分离出其他线程或运行时间很长的查询都是不明智的做法。