首页 > 代码库 > Asp.net 对象之application与session

Asp.net 对象之application与session

     上篇博客讲解了asp.net中response对象和request对象,这篇博客为大家详细的介绍一下application对象与session对象


     Application对象时httpApplicationState对象的一个实例,可以生成一个所有web应用程序都可以存取的变量,这个变量的使用范围涵盖所有使用者,是要他正在用这个网页的程序都可以存取这个变量。

     语法: Application[“变量”]=”变量的内容”; 例如:application[“count”]=0;

     Application对象的声明周期:他从在与服务器的内容中只要创建了,就会一直存在,知道关闭IIS服务器,或者用page对象的clear方法清除。因为他不会自己消亡,所以注意不要创建过多的对象!


Application对象的常用属性,

    

    

AllKeys

返回全部Application对象变量名到一个字符串数组中

Count

获取Application对象变量的数量

Item

允许使用索引或Application变量名称传回内容值

这些属性主要使用的是count属性, 一般用来统计网站的访问数量!


Application对象常用的方法

    

    

Add

新增一个Application对象变量

Clear

清除全部Application对象变量

Lock

锁定全部Application对象变量

Remove

使用变量名称移除一个Application对象变量

RemoveAll

移除全部Application对象变量

Set

使用变量名称更新一个Application对象变量的内容

UnLock

解除锁定的Application对象变量

        

    比较常用的lock和unlock 方法。

    Application的方法都是用于处理多个用户对存储在Application中的数据进行写入的问题。共有两个:Lock方法:防止其他客户端更改Application对象的值。(仅当前客户可修改和存取);Unlock方法:与Lock方法相反,允许其他客户端更改Application对象的值。

   ·Lock方法,锁住其他线程对Application对象中stat集合的访问权限。这个方法主要是用来防止对Application的变量操作过程中,其他并发程序可能造成的影响。比如在记数过程中,如果不进行上锁操作,就有可能发生脏读脏写。例如,开始从变量中取得记数值1,

     如果在记数并写回到变量之间,另一页面对它发生了一次记数,并先行写回变量,那么最终写回到变量中的值为2,而并不是实际的3。如果采用了上锁机制,在页面读出变量到记数并写回变量的过程中,即使发生了另一次记数,由于变量被锁住,它也不可能在变量被写回以前取得成功,只有等待变量释放,从而形成两者对变量操作的串行性,避免了数据的脏读和脏写。

 ·Unlock方法,对Application对象Stat集合锁定的解锁操作,释放资源以供其他页面使用。

         具体用法:

               Application.Lock-锁定Application对象所有变量

               Application.Unlock-解锁Application对象所有变量

        如;

              Application.Lock;

      Application("NumCount")=Application("NumCount")+1;(NumCount是在Application_OnStart事件设置的变量)

       Application.Unlock;

        

      Application的应用:

     ◆可以统计目前上站的人数

     ◆可以用于网站上不同用户之间的通信

     ◆可以记录广告条被点击的次数

     ◆可以在每个主页上显示动态信息

     ◆可以从数据库提取数据供多个网页使用


Session对象

    Session对象是HttpSessionState对象的一个实例,其功能和application对象类似,都是用来存储跨网页程序的变量或者对象,但他们的有些特性存在差异。

    语法:session[“变量名”]=“变量内容”;  variablesName=session[“变量名”];


Session对象常用的属性

    

    

TimeOut

传回或设定Session对象变量的有效时间,如果使用者

超过有效时间没有动作,Session对象就会失效。

默认值为20分钟

IsCookieless

一个布尔值,表示回话ID是嵌入到URL中,还是存储在HTTPCookie中

SessionID

获取回话的唯一标示符

     TimeOut属性该属性用来定义用户Session对象的时限。如果用户在规定的时间内没有刷新网页,则Session对象就会终止。一般默认为20分钟。 设置方法,一般在web.config中设置,<sessionState mode=”InProc”timeout=”30”/>


Session对象常用的方法

    

    

Abandon

此方法结束当前会话,并清除会话中的所有信息。

如果用户随后访问页面,可以为它创建新会话

(“重新建立”非常有用,这样用户就可以得到新的会话)

Clear

此方法清除全部的Session对象变量,但不结束会话

Add

向session对象中添加一个新项

Remove

删除Session对象中集合中指定的项

该对象的方法比较简单不在详细介绍。

       Session对象的应用

       ◆session对象主要用于保存用户的各种信息

       ◆可以通过session对象来判断此用户是否是合法用户

       ◆在服务器上通过session来区分每一个上网用户

 

Application对象和session对象的异同

    生命周期不同。

    Session对象只针对单一网页使用者,不同的客户端无法相互存取。Application对象终止于停止IIS服务,而session对象终止于联机机器离线时,也就是网页使用者关闭浏览器或者超过Session变量的有效时间,Session对象就会消失!

    他们都有OnStart事件和OnEnd事件,也是必须放在Global.asa文件里。

    ASP.net的Application和Session对象体现了其他ASP内置对象所没有的特征--事件。每一个访客访问服务器时都会触发一个OnStart事件(第一个访客会同时触发Application和Session的OnStart事件,但Application先于Session),每个访客的会话结束时都会触发一个OnEnd事件(最后一个访客会话结束时会同时触发Application和Session的OnEnd事件,但Session先于Application)。

     OnStart和OnEnd这两个事件一般应用在虚拟社区中统计在线人数、修改用户的在线离线状态等。要具体定义这两个事件,需要将代码写在Global.asa文件,并将该文件放在站点的根目录下(缺省是\Inetpub\wwwroot\)。另外,Application和Session对象规定了在OnEnd事件里除了Application对象外其他ASP内置对象(Response、Request、Server、Session...)一概不能使用。

 

    只有熟练的掌握这连个对象的用法才能更好的进行服务器编程。

     我将在下一篇博客中介绍Asp.net中的Cookie对象和Server对象,请继续关注!

Asp.net 对象之application与session