第51章、Application应用

来源:互联网 发布:调音师用什么软件 编辑:程序博客网 时间:2024/06/06 01:06

 

【知识要点】
  (1)了解不同页面之间的传值
  (2)Application的应用

【问题提出】
  我们希望使用Application统计网站的访问情况。
  (1)页面单击数:页面被单击一次+1,不管是否是同一个用户多次单击页面。
  (2)用户访问数:来了一个用户+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"]));
  }
}


1、设计界面

  (1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。

  (2)在“解决方案资源管理器”中添加“Global.asax”页面。

  

  (3)在“解决方案资源管理器”中添加“Application-Session.aspx”页面。

2、添加代码

  (1)双击Global.asax页面。

  我们首先需要在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();
}

 

 (2)双击Application-Session.aspx页面空白处。

  我们在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与Session的异同。

  (3)选择“Application-Session.aspx”,单击右键菜单选择“从浏览器中查看……”。

  

  (4)刷新“Application-Session.aspx”页面。

  

  (5)关闭“Application-Session.aspx”页面,再次打开,试着再刷新几次。

  

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

  在结束本节以前,让我们来根据第一节中提出的几个问题总结一下Application的特性。

  · 存储的物理位置。服务器内存。
  · 存储的类型限制。任意类型。
  · 状态使用的范围。整个应用程序。
  · 存储的大小限制。任意大小。
  · 生命周期。应用程序开始的时候创建(准确来说是用户第一次请求某URL的时候创建),应用程序结束的时候销毁。
  · 安全与性能。数据总是存储在服务端,安全性比较高,但不易存储过多数据。
  · 优缺点与注意事项。检索数据速度快,但缺乏自我管理机制,数据不会自动释放。

原创粉丝点击