MVC 统计在线人数:安全
protected void Application_Start() { Application["OnLineUserCount"] = 0; AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); } protected void Session_Start(object sender, EventArgs e) { Application.Lock(); Application["OnLineUserCount"] = Convert.ToInt32(Application["OnLineUserCount"]) + 1; Application.UnLock(); } protected void Session_End(object sender, EventArgs e) { Application.Lock(); Application["OnLineUserCount"] = Convert.ToInt32(Application["OnLineUserCount"]) - 1; Application.UnLock(); }
1、Application对象的理解服务器
Application对象在实际网络开发中的用途就是记录整个网络的信息,如上线人数、在线名单、意见调查和网上选举等。在给定的应用程序的多有用户之间共享信息,并在服务器运行期间持久的保存数据。并且Application对象还有控制访问应用层数据的方法和可用于在应用程序启动和中止时触发过程的事件。网络
Global.asax(一般咱们不更名)是一个用来处理应用程序全局的事件。打开文件,系统已经为咱们定义了一些事件的处理方法。session
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,则不会引起该事件 }
经过这些注释咱们能够看到,这些事件是整个应用程序的事件,和某一个页面没有关系。性能
2、Application对象的应用网站
1.使用Application对象保存信息spa
(1)、使用Application对象保存信息 线程
Application(“键名”) = 值code
或 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模块引起的应用程序级别事件的代码。
在ASP.NET 2.0中,Application已经变得不是很是重要了。由于Application的自我管理功能很是薄弱,它没有相似Session的超时机制。也就是说,Application中的数据只有经过手动删除或者修改才能释放内存,只要应用程序不中止,Application中的内容就不会消失。在下一节中,咱们会看到,能够使用Cache实现相似Application的功能,同时Cache又有丰富而强大的自我管理机制。
总结一下Application的特性:
· 存储的物理位置。服务器内存。
· 存储的类型限制。任意类型。
· 状态使用的范围。整个应用程序。
· 存储的大小限制。任意大小。
· 生命周期。应用程序开始的时候建立(准确来讲是用户第一次请求某URL的时候建立),应用程序结束的时候销毁。
· 安全与性能。数据老是存储在服务端,安全性比较高,但不易存储过多数据。
· 优缺点与注意事项。检索数据速度快,但缺少自我管理机制,数据不会自动释放。