ASP.NET 中的Application详解
2016-04-26 00:00
791 查看
一、全局应用程序类
从Application这个单词上大致可以看出Application状态是整个应用程序全局的。在ASP时代我们通常会在Application中存储一些公共数据,而ASP.NET中Application的基本意义没有变:在服务器内存中存储数量较少又独立于用户请求的数据。由于它的访问速度非常快而且只要应用程序不停止,数据一直存在,我们通常在Application_Start的时候去初始化一些数据,在以后的访问中可以迅速访问和检索。
Global.asax 是一个用来处理应用程序全局的事件。打开文件,系统已经为我们定义了一些事件的处理方法。
通过这些注释我们可以看到,这些事件是整个应用程序的事件,和某一个页面没有关系。
二、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统计网站访问
假设我们希望使用Application统计网站的访问情况。
・页面单击数。页面被单击一次+1,不管是否是同一个用户多次单击页面。
・用户访问数。来了一个用户+1,一个用户打开多个页面不会影响这个数字。
我们首先需要在Application_Start中去初始化两个变量。
用户访问数根据Session来判断,因此可以在Session_Start的时候去增加这个变量:
我们看到,Application的使用方法和Session差不多。唯一要注意的是,Application的作用范围是整个应用程序,可能有很多用户在同一个时间访问Application造成并发混乱,因此在修改Application的时候需要先锁定Application,修改完成后再解锁。
页面单击数则在页面Page_Load的时候去修改。
四、Application总结
在ASP.NET 2.0中,Application已经变得不是非常重要了。因为Application的自我管理功能非常薄弱,它没有类似Session的超时机制。也就是说,Application中的数据只有通过手动删除或者修改才能释放内存,只要应用程序不停止,Application中的内容就不会消失。在下一节中,我们会看到,可以使用Cache实现类似Application的功能,同时Cache又有丰富而强大的自我管理机制。
让我们来总结一下Application的特性。
・存储的物理位置。服务器内存。
・存储的类型限制。任意类型。
・状态使用的范围。整个应用程序。
・存储的大小限制。任意大小。
・生命周期。应用程序开始的时候创建(准确来说是用户第一次请求某URL的时候创建),应用程序结束的时候销毁。
・安全与性能。数据总是存储在服务端,安全性比较高,但不易存储过多数据。
・优缺点与注意事项。检索数据速度快,但缺乏自我管理机制,数据不会自动释放。
asp.net Reporting Service在Web Application中的应用
asp.net Application_AcquireRequestState事件,导致Ajax客户端不能加载
ASP.NET中Application和Cache的区别分析
ASP.Net的Application介绍
asp.net错误处理Application_Error事件示例
ASP.NET中application对象的使用介绍
ASP.NET中application对象的使用介绍
ASP.NET 使用application与session对象写的简单聊天室程序
ASP.NET中Application全局对象用法实例浅析
ASP.NET中使用Application对象实现简单在线人数统计功能
ASP.NET中Application、Cookie、Session、Cache和ViewState
从Application这个单词上大致可以看出Application状态是整个应用程序全局的。在ASP时代我们通常会在Application中存储一些公共数据,而ASP.NET中Application的基本意义没有变:在服务器内存中存储数量较少又独立于用户请求的数据。由于它的访问速度非常快而且只要应用程序不停止,数据一直存在,我们通常在Application_Start的时候去初始化一些数据,在以后的访问中可以迅速访问和检索。
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统计网站访问
假设我们希望使用Application统计网站的访问情况。
・页面单击数。页面被单击一次+1,不管是否是同一个用户多次单击页面。
・用户访问数。来了一个用户+1,一个用户打开多个页面不会影响这个数字。
我们首先需要在Application_Start中去初始化两个变量。
void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 Application["PageClick"]=0; Application["UserVisit"]=0; }
用户访问数根据Session来判断,因此可以在Session_Start的时候去增加这个变量:
void Session_Start(object sender, EventArgs e) { Application.Lock(); Application["UserVisit"]=(int)Application["UserVisit"]+1; Application.UnLock(); }
我们看到,Application的使用方法和Session差不多。唯一要注意的是,Application的作用范围是整个应用程序,可能有很多用户在同一个时间访问Application造成并发混乱,因此在修改Application的时候需要先锁定Application,修改完成后再解锁。
页面单击数则在页面Page_Load的时候去修改。
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Application.Lock(); Application["PageClick"] = (int)Application["PageClick"] + 1; Application.UnLock(); Response.Write(string.Format("页面单击数:{0}<br/>", Application["PageClick"])); Response.Write(string.Format("用户访问数:{0}<br/>", Application["UserVisit"])); } }
四、Application总结
在ASP.NET 2.0中,Application已经变得不是非常重要了。因为Application的自我管理功能非常薄弱,它没有类似Session的超时机制。也就是说,Application中的数据只有通过手动删除或者修改才能释放内存,只要应用程序不停止,Application中的内容就不会消失。在下一节中,我们会看到,可以使用Cache实现类似Application的功能,同时Cache又有丰富而强大的自我管理机制。
让我们来总结一下Application的特性。
・存储的物理位置。服务器内存。
・存储的类型限制。任意类型。
・状态使用的范围。整个应用程序。
・存储的大小限制。任意大小。
・生命周期。应用程序开始的时候创建(准确来说是用户第一次请求某URL的时候创建),应用程序结束的时候销毁。
・安全与性能。数据总是存储在服务端,安全性比较高,但不易存储过多数据。
・优缺点与注意事项。检索数据速度快,但缺乏自我管理机制,数据不会自动释放。
您可能感兴趣的文章:
ASP.NET内置对象之Application对象asp.net Reporting Service在Web Application中的应用
asp.net Application_AcquireRequestState事件,导致Ajax客户端不能加载
ASP.NET中Application和Cache的区别分析
ASP.Net的Application介绍
asp.net错误处理Application_Error事件示例
ASP.NET中application对象的使用介绍
ASP.NET中application对象的使用介绍
ASP.NET 使用application与session对象写的简单聊天室程序
ASP.NET中Application全局对象用法实例浅析
ASP.NET中使用Application对象实现简单在线人数统计功能
ASP.NET中Application、Cookie、Session、Cache和ViewState
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- Android Manifest 用法
- 星外ASP.Net的安全设置相关说明
- 跨越fso、wsh、 application写文件
- IIS 错误 Server Application Error 详细解决方法
- C#、ASP.NET通用扩展工具类之TypeParse
- asp 内置对象 Application 详解
- IIS运行错误 Server Application Error 错误代码 Error: 8004的解决方法
- 解决IIS的Server Application Error的2种方法
- 实现ASP.NET无刷新下载并提示下载完成的开发思路
- C#、ASP.NET通用扩展工具类之LogicSugar
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- 程序中常用的种代码
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- ASP.NET页面间的传值的几种方法
- 入侵ASP.net网站的经验附利用代码
- 盘点PHP和ASP.NET的10大对比!
- ASP.NET MVC4入门教程(四):添加一个模型
- ASP.NET MVC4入门教程(五):从控制器访问数据模型
- ASP.NET中 CheckBox复选框控件的使用