session,application,cookie,viewstate,Querystring等的作用域

Session:存放于服务器,生命周期根据不同的设置而定。默认是20分钟,可以设置成无限期。主要根据客户端传递过来的SessionID来区分不同的对话。至于SessionID如何传递。目前绝大部分是只用Cookie,少部分使用url,极少部分使用表单元素。总之从客户端传递到服务器即可。

application:服务器应用程序,这个的生命周期是根据应用程序进程来决定的。IIS5以前基本上是当前进程,IIS5之后是根据进程池而定。只要这些停了那么就消失了,否则就一直存在。

cookie:这个是存放的载体在客户端的浏览器中,生命周期默认是根据服务器返回的Set-Cookie头设置的。有2大类。1、httponly:浏览器一关就没了。2、有过期时间:过期时间到了就没了。当然跟本地浏览器的设置也有关系。还有就是每个cookie都会有指定的domain,如果当前网站与指定的domain不同那么cookie也是取不到的。还有cookie的domain大小写区分,www.aa.com与www.Aa.com是不同的。另外cookie的传递是在Http头中传递的,一旦设置了cookie。每次请求服务器(不管是网页还是图片还是脚本)都100%会带上cookie。所以cookie过大的话,会影响网络传输效率。还有cookie只支持ASCII编码所以要UrlEncode

viewstate:这个东西不好说,载体是网络。服务器将服务器的 可以序列化的对象 序列化并加密后 转换成base64格式放到 一个页面的hidden表单元素中。当带着这个viewstate的表单提交回服务器时才能接收到。所以嘛,这个对象的生命周期仅仅是这个页面。而且页面必须用表单提交回来,否则数据就丢了。想解密viewstate?首先你要拿到一个重要的解密key。这个就是machineKey。

Querystring:http协议的基础,理论上没有生命周期可言。是由客户端向服务器发送的URL请求而已。因为也在http头中所以只支持ASCII编码


原文地址:http://topic.csdn.net/u/20111020/23/bcc747bf-4bce-4d04-afd0-e26cf4446f2d.html

个人觉得这个答案是比较好的,故摘出来,零金碎玉,积少成多!

你可能感兴趣的:(application)