周广明的博客

.Net & MS SQL Tech
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ASP.NET 状态处理方式

Posted on 2008-08-27 12:56  Zhougm  阅读(164)  评论(0)    收藏  举报

     Application,利用它所建立的变量,可在该web系统内部任何地方都可以访问,通常网站的访问统计用的比较多.不过要使用Application的话,得先在Web系统中建立一个Global.asax文件,事实上Session也是使用这个文件.

Global.asax

 

     Application是一个共享的对象,当程序开始运行,它就建立了,一直持续到程序关闭.它的变量是共享的,所有操作这个程序的人都可以使用.说到这问题来了,如果两个人同时要修改Appliction中同一个变量,它该听谁的呢?因此,我们就可以使用悲观的锁定,每一次变量被操作的时候都使用Lock来锁定它,当操作完后再解锁Unlock.

Application

 

     Application某一变量在程序中只有一个值,但Session是有多少个人使用就有多少个值.

     Session是不共享的,当某人退出程序时,该对象在系统默认的二十分钟后被销毁,当然,我们可以人为地去修改这个时间,如果某人在规定的时间内再访问程序的话,他直接使用先前建立的那个Session对象,但如果超出特定的时间后再来那只好再重建Session.

Session

 

     Cookie其实就是在硬盘或者浏览器内存中建立的一个对象,如果说Session对象是保存在服务器端的,那么Cookie则是保存在客户端的.它们都是为了保存客户的一些信息.Session只能短时间地保存客户状态,因为我们得考虑服务器的负载,而Cookie则可以长时间地保存,例如我们常见的记住我的信息,论坛中保存一天,一月等等.

        //写入cookie
        HttpCookie newcookie = new HttpCookie("myCookie");
        newcookie.Values[
"name"= "Miller";
        newcookie.Values[
"dt"= DateTime.Now.ToString();
        Response.Cookies.Add(newcookie);
        Response.Write(
"Cookie写入成功 !");

        
//读出cookie
        HttpCookie icookie = Request.Cookies["myCookie"];
        Response.Write(icookie.Values[
"name"+ "<br>");
        Response.Write(icookie.Values[
"dt"]);