一、Application对象的理解

Application对象在实际网络开发中的用途就是记录整个网络的信息,如上线人数、在线名单、意见调查和网上选举等。在给定的应用程序的多有用户之间共享信息,并在服务器运行期间持久的保存数据。而且Application对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。

Global.asax(通常我们不改名)是一个用来处理应用程序全局的事件。打开文件,系统已经为我们定义了一些事件的处理方法。

    void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
} void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
} void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
} void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
} void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为InProc 时,才会引发 Session_End 事件 // 如果会话模式设置为 StateServer 或 SQLServer,则不会引发该事件
}

通过这些注释我们可以看到,这些事件是整个应用程序的事件,和某一个页面没有关系。

二、Application对象的应用

1.使用Application对象保存信息

(1)、使用Application对象保存信息 

Application(“键名”) = 值

或 Application(“键名”,值)

(2)、获取Application对象信息

变量名 = Application(“键名”)

或:变量名 = Application.Item(“键名”)

或:变量名 = Application.Get(“键名”)

(3)、更新Application对象的值

Application.Set(“键名”, 值)

(4)、删除一个键

Application.Remove(“键名”, 值)

(5)、删除所有键

Application.RemoveAll()

或Application.Clear()

2.有可能存在多个用户同时存取同一个Application对象的情况

这样就有可能出现多个用户修改同一个Application命名对象,造成数据不一致的问题。

HttpApplicationState类提供两种方法Lock和Unlock,以解决对Application对象的访问同步问题,一次只允许一个线程访问应用程序状态变量。

关于锁定与解锁

锁定:Application.Lock()

访问:Application(“键名”) = 值

解锁:Application.Unlock()

注意:Lock方法和UnLock方法应该成对使用。

可用于网站访问人数,聊天室等设备

3. 使用Application事件

在ASP.NET应用程序中可以包含一个特殊的可选文件—Global.asax文件,也称作ASP.NET应用程序文件,它包含用于响应ASP.NET或HTTP模块引发的应用程序级别事件的代码。

三、Application总结

在ASP.NET 2.0中,Application已经变得不是非常重要了。因为Application的自我管理功能非常薄弱,它没有类似Session的超时机制。也就是说,Application中的数据只有通过手动删除或者修改才能释放内存,只要应用程序不停止,Application中的内容就不会消失。在下一节中,我们会看到,可以使用Cache实现类似Application的功能,同时Cache又有丰富而强大的自我管理机制。

总结一下Application的特性:

·      存储的物理位置。服务器内存。

·      存储的类型限制。任意类型。

·      状态使用的范围。整个应用程序。

·      存储的大小限制。任意大小。

·      生命周期。应用程序开始的时候创建(准确来说是用户第一次请求某URL的时候创建),应用程序结束的时候销毁。

·      安全与性能。数据总是存储在服务端,安全性比较高,但不易存储过多数据。

·      优缺点与注意事项。检索数据速度快,但缺乏自我管理机制,数据不会自动释放。

最新文章

  1. [Reproduced works]MongoDB Unauthorized Access Vulnerability
  2. vs使用
  3. 【Java EE 学习 32 上】【JQuery】【选择器】
  4. Mac OS 电脑播放 iPhone音乐
  5. No.004 Median of Two Sorted Arrays
  6. MVCC
  7. Linux网络编程(四)
  8. angularJS在创建指令需要注意的问题(指令中使用ngRepeat)
  9. jQuery链式操作如何返回上一级DOM
  10. 微信小程序探索(一)
  11. Git中一些远程库操作的细节
  12. React子组件和父组件通信
  13. 各种BUG
  14. CBV源码分析+APIVIew源码分析
  15. BZOJ1799 self 同类分布 数位dp
  16. 随手练——小米OJ 高弗雷勋爵
  17. Nextcloud13私有云盘安装指南
  18. doc文件中的cer附件保存到本地
  19. jsp 简单标签开发
  20. u-boot分析

热门文章

  1. 提升 web 应用程序的性能(一)
  2. event.keycode大全(javascript)
  3. Configuration of OpenCV2.1.0 with VS2010
  4. thinkphp中M()和D()的理解
  5. DTD约束的校验工具安装及检验(Iexmltls工具)
  6. excel表中内容如何反排列
  7. SecureCRT通过console口连接思科设备
  8. 【iCore2 模块相关资料】发布模块DEMO 代码包,目前支持 iM_TFT30、 iM_LAN和 iM_RGB 三个模块
  9. Intel OIT demo
  10. 正则匹配中文.PHP不兼容的问题