ASP.NET应用程序状态(Application对象)是可供ASP.NET应用程序中的所有类使用的数据存储库,其位于Web服务器的内存中,比存放在数据库中的信息检索起来要快。Application对象中的数据可被当前Web应用程序的所有用户和会话使用,一般用来存储数量较少、不随用户变化而变化的常用数据。
Application对象为HttpApplicationState数据类型。在用户初次访问应用程序中的任何URL资源时,实例化Application对象,通过HttpContext类的Application属性可以访问。
我们在使用Application对象时,需要注意一下几点:
1、资源:由于Application位于内存中,因此数据的访问速度比存放在数据库或磁盘文件根块,但如果在Application中存放加大的数据块可能会耗尽Web服务器的内存,这会大大降低服务器的性能,不光是影响当前的Web站点,还影响位于同一Web服务器的其他Web应用。万一要存放大量的应用数据,我们建议使用ASP.NET的缓存——因为ASP.NET缓存的数据也是位于内存中,并且ASP.NET框架会对缓存进行主动管理,如果内存不足将会移除一些项目,而不是像Application对象在服务器内存不足时引发系统将内存分页到磁盘中造成综合心能的大幅降低。
2、非持久性:由于Application位于内存,因此每当停止或重新启动Web应用时,Application中的数据都会丢失。如改变了Web.Config文件,需要重启Web应用,此时如果不将Application中的值写入到文件或数据库中,所有的Application数据将丢失。
3、可伸缩性:Application中的数据不能在同一Web应用的多个服务器间共享,同样也不能在同一服务器上为同一Web应用启动的多个辅助进程间(Web Farm)共享。如果Web应用要在多CPU或多服务器的环境中运行,就不能用Application来保存共享数据,只能借助其他办法,如将数据存放在数据库中。
4、并发操作:Application完全是线程自由的,其数据可以由多个线程同时访问。因此,必须确保通过包含内置同步支持,确保线程安全。一般用Lock和UnLock方法来确保Application数据的完整性,使其一次只能有一个线程对其进行操作。
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |