对,我的确每天都在上网,并且登陆很多网站,但是当接触到Application和Session的时候,学习起来还是有些困难。
Application和Session到底是什么东东?在Web应用程序结构中他们处于什么位置,起到什么作用?
在我的理解的能力范围内解释一下吧:
1,先通过解释比较复杂的访问数据库的动态网页的处理流程,来了解Web应用程序及其工作机制:
步骤1,Web浏览器请求动态页;
步骤2,Web服务器查找该页并将其传递给应用程序服务器;
步骤3,应用程序服务器查找并执行该页中的动态指令;
步骤4,应用程序服务器将查询发送到数据库驱动程序;
步骤5,驱动程序对数据库执行查询操作;
步骤6,查询结果返回给驱动程序;
步骤7,驱动程序将查询结果返回给应用程序服务器;
步骤8,应用程序服务器将数据插入页中,然后传递给Web服务器;
步骤9,Web服务器将完成的页发送回请求浏览器;
2,了解了Web应用程序及其工作机制,我们再每部分单个来说,从而了解Application和Session在啊Web应用程序结构中的位置和作用:
结合以上两图:
Application:把Web应用程序部署在Web服务器上,运行的软件称为Application,即为一个应用程序实例;
Session:一个应用程序运行在一台服务器上,会有很多用户向应用程序发出请求,每个客户与服务器之间的交互成为一个会话session;
Server:服务器对象认为是server;通过server控制服务器信息;
问题:
(1)它们什么时候被建立?它们的作用范围分别是什么?
Application是全局对象,在程序运行(第一个用户请求)时就建立,只被创建一次,Application对象可以多用户同时使用;它用来维护各个会话之间全局需要共享的数据。作用范围是当前整个应用程序(如果把数据存储在Application对象集合中,则任何会话都可读取);
Session是会话,一个用户对应一个session会话,用户访问网站的时候Session会话被建立; 作用范围是基于单个用户的(即,一个用户不能访问另一个用户的Session,因为Session对象包含用户特定信息,在会话中跟踪和监视用户信息)
(2)它们如何失效?
停止Web服务,应用程序停止,Application对象失效;
(注:除非正常的应用程序停止,如:断电)
用户关闭网页时,Session不一定失效,因为Session也有自己的生命周期,默认情况下,Session的超时时间(Timeout)是20分钟,即用户保持连续20分钟不访问网站,则Session被收回。如果在这20分钟内用户又访问了一次页面,那么20分钟就重新计时了。也就是说,这个超时是连续不访问的超时时间,而不是第一次访问后20分钟必过时。
当然,可以通过修改Web.config文件的配置项来调整这个超时时间,如下面的代码所示:
<sessionState timeout="30"></sessionState>
同样也可以在程序中进行设置,如下面的代码所示:
Session.Timeout = "30";
一旦Session超时,Session中的数据将被回收,如果你再次使用Session,将给你分配一个新的SessionID。
如果需要立刻让Session失效。比如用户退出系统后,Session中保存的所有数据需要全部失效。处理方法如下面的代码所示:
Session.Abandon();
有关Application对象和Session对象的总结,还会再下一篇博客中继续。待。。。。