`
android_mylove
  • 浏览: 404444 次
社区版块
存档分类
最新评论

Application Session Cookie ViewState Cache Hidden 区别

 
阅读更多

ASP.NET中,有多种保存信息的对象,如:Application,Session,Cookie,ViewState、Cache等,它们有什么区别?应用环境是什么?

为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示:



Application

1、Application用来保存所有用户共用的信息;

2、在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Application是理想的选择。但是在Asp.net开发环境中我们把类似的配置数据放在Web.config中;

3、如果要使用Application要注意的是所有的写操作都要在Application_OnStart事件中完成(global.Asax),尽管可以使用Application.Lock()避免了冲突,但是它串行化了对Application的请求,会产生严重的性能瓶颈;

4、不要使用Application保存大数据量信息;

5、代码:

Application["UserID"]="test"; //写

stringUserName=Application["UserID"].ToString(); //读


Session
1、Session用来保存每一个用户的专有信息;
2、Session的生存期是用户持续请求时间加上一段时间(一般是20分钟左右);
3、Session信息是保存在Web服务器内存中的,保存数据量可大可小;
4、Session超时或者被关闭将自动释放数据信息;
5、由于用户停止使用应用程序之后它仍在内存中存留一段时间,因此这种方法效率较低;
6、代码:

Session["UserID"]="test"; //写

stringUserName=Session["UserID"].ToString(); //读


Cookie
1、Cookie用来保存客户浏览器请求服务器页面的请求信息;
2、我们可以存放非敏感的用户信息,保存时间可以根据需要设置;
3、如果没有设置Cookie失效日期,它的生命周期保存到关闭浏览器为止;
4、Cookie对象的Expires属性设置为MinValue表示永不过期;
5、Cookie存储的数据量受限制,大多数的浏览器为4K因此不要存放大数据;
6、由于并非所有的浏览器都支持Cookie,数据将以明文的形式保存在客户端;
7、代码:

Resopnse.Cookies["UserID"]="test"; //写

stringUserName=Resopnse.Cookies["UserID"].ToString(); //读


ViewState
1、ViewState用来保存用户的状态信息,有效期等于页面的生命周期;
2、可以保存大量数据但是要慎用,因为会影响程序性能;
3、所有的Web服务器控件都是用ViewState在页面PostBack期间保存状态;
4、不需要则关闭 @page 里面设置EnableViewState=false;
5、代码:

ViewState["ID"]="test"; //写

stringID=ViewState["ID"].ToString(); //读

Cache
1、Cache用于在Http请求期间保存页面或者数据;
2、Cache的使用可以大大的提高整个应用程序的效率;
3、它允许将频繁访问的服务器资源存储在内存中,当用户发出相同的请求后,服务器不是再次处理而是将Cache中保存的数据直接返回给用户;
4、可以看出Cache节省的是时间(服务器处理时间);
5、Cache实例是每一个应用程序专有的,其生命周期==该应用程序周期,应用程序重启将重新创建其实例;
6、注意:如果要使用缓存的清理、到期管理、依赖项等功能必须使用Insert 或者Add方法方法添加信息;
7、代码:

Cache["ID"]="test";或者Cache.Insert("ID","test"); //写

stringID=Cache["ID"].ToString(); //读

Hidden
1、Hidden控件属于html类型的服务器控件,要使用Runat=server,始终处于隐藏状态
2、每一次提交的时候它会和其他服务器控件一起提交到服务器端;
3、代码:

Hidden.Value="king"; //写

stringid=Hidden.Value; //读

查询字符串
1、查询字符串的方式是将要传递的值连接在URL后面;
2、一般用于页面之间传递信息;
3、由于URL的长度有一定的限制,因此不能传递太大的信息;
4、安全性不是很好。
5、代码:

Response.Redirect("List.aspx?id=123&name=abc"); //传值页面

stringname=Request.QueryString["name"]; //取值页面

stringid=Request.QueryString["id"];

global.Asax 文件

Application_start:

第一个访问网站的用户会触发该方法. 通常会在该方法里定义一些系统变量,如聊天室的在线总人数统计、,历史访问人数统计的初始化等等均可在这里定义.

Application_end:

网站关闭,或重启时,会触发该方法. 没有进行过多试验.

Session_start :

每个用户访问网站的第一个页面时触发;

Session_end:

使用了session.abandon(),或session超时用户退出后均可触发.

注意:

Session_end中不能使用session对象、 server.mappath()、服务器对象。 所以只能用session.contents("username") 取代session("username"),或者用Application对象或方法;

例如:

想在session_end中使用Server.MapPath("users.xml"),则应在Application_start 中定义Application("xmlPath") = Server.MapPath("users.xml"),然后在session_end中调用Application("XmlPath"),而不能直接在session_end中使用诸如:Server.MapPath("users.xml"),

Application、session执行顺序是:

1、Application_start

2、session_start

3、session_end

4、Application_end


分享到:
评论

相关推荐

    Application、Session、Cookie、ViewState、Cache、Hidden的区别

    ### Application、Session、Cookie、ViewState、Cache、Hidden 的区别与应用 #### Application - **信息量大小**:可存储任意大小的数据,适用于全局共享信息,如网站计数器、配置参数等。 - **作用域和保存时间**...

    Application session cookies用法

    【Application】 Application 对象在 ASP.NET 中用于存储所有用户共享的数据信息。这通常是全局性的,意味着无论哪个用户访问,都可以访问这些数据。然而,由于数据存储在服务器端,且所有写入操作需在 `...

    Net内置对象Session,Application等的用法和区别

    这些内置对象包括Session、Application、Cookie、ViewState、Cache以及隐藏字段等。它们各自具有不同的特点和用途,了解它们的工作原理和使用场景对于构建高效稳定的Web应用至关重要。 #### 二、各对象详解 **1. ...

    ASP_NET用户状态保持

    例如,ViewState适用于简单的状态管理,而Session适合需要存储大量用户特定数据的情况。了解和熟练掌握这些技术,能够帮助开发者创建更高效、更个性化的Web应用。 文件"ASP_NET保持用户状态的九种选择(上).htm"和"...

    ASPNET保持用户状态的九种选择

    在ASP.NET应用开发中,保持用户状态是至关重要的,它涉及到用户体验、...在性能和负载均衡方面,减少对ViewState和Session的依赖通常是有益的。总的来说,理解并灵活运用这些技术是构建高效、安全的ASP.NET应用的关键。

    页面传值``````````

    对于全局共享的数据,可以使用Application或Cache对象,它们保存在服务器内存中。但请注意,过多使用可能导致资源消耗。 8. Server.Transfer 此方法不生成新的HTTP请求,而是直接将控制权转移给目标页面,保留当前...

    ASP.NET2.0(C#)基础教程 李勇平老师的ppt课件 char12

    4. **ViewState**:ViewState是ASP.NET页面默认的状态管理机制,它自动跟踪并序列化页面控件的状态。数据被编码为隐藏字段并包含在HTML响应中,然后在后续的请求中返回,以便恢复页面的状态。 5. **QueryStrings**...

    asp.ner_页面传值总结

    Application和Cache提供全局应用程序级别的数据存储,适用于所有用户共享的数据。它们不同于Session,不与特定用户关联,但需谨慎管理,避免数据冲突和资源浪费。 十、PostBackUrl属性 ASP.NET控件如Button、...

    ASP传参方法

    全局应用程序变量(Application)和缓存(Cache)可用于在整个应用程序范围内共享数据,而不是局限于单一用户或页面。 9. Hidden Fields HTML隐藏字段可以用来在页面回发时传递数据,但这仅限于同一页面的生命周期...

    asp.net 父子页面传值

    8. **Application 或 Cache 对象**: 对于需要在整个应用程序范围内共享的数据,可以利用Application或Cache对象。但这通常用于非页面间的通信。 在WebSite16项目中,可能包含了示例代码和教程,演示了上述一些方法...

    web传值方式和介绍

    * Session 域:就是一般的会话,如果客户端没有开启 Cookie,可以通过 URL 中的 UID 来标示 * Request 域:就是 GET 方式的 * Form 域:就是 POST 方式的 * Flash 域:与 Flash 通讯时候的变量 * Client 域:和...

    asp.net面试题

    - 可以使用ViewState、Control State、Hidden Fields等方式,或者通过Url编码传递。 7. 遍历控件并赋值: - 示例代码展示了如何遍历Windows Forms中的TextBox控件并清空其文本。在ASP.NET Web Forms中,类似操作...

    ASP.NET 页面间信息保存

    6. **Application或Cache**:全局存储,适用于多用户共享数据,但不推荐用于用户特定信息。 7. **数据库存储**:持久化数据存储,适用于大量或需要长期保存的数据。 **事件模型** ASP.NET页支持事件模型,允许...

    asp.net项目开发全程实录第6到第10章的源码

    这一章可能讲解了ViewState、Session、Cookie、Application和Cache等状态管理机制的使用,以及何时选择合适的状态管理策略。 第10章可能专注于页面间通信和导航。开发者可能学习如何使用Query String、Hidden ...

    .NET笔试题,绝对经典

    - 客户端:Cookie、QueryString、InputHidden、ViewState。 9. **强数据类型与弱数据类型的差异** - **强数据类型**(如C#):严格类型检查,不允许不匹配的类型赋值,防止类型错误。 - **弱数据类型**(如C++)...

    net面试题.。。。。。

    - `Session`:在会话范围内存储数据,跨页面有效。 - `Server.Transfer`:服务器端转移请求,保留原始URL。 - `Application`:全局应用程序变量,所有用户共享。 - `Cache`:缓存数据,提高性能。 - `...

    ASP.NET资源链接大楼

    28. **应用程序状态管理**:Application、Session、Cookie、ViewState、Cache和Hidden等机制用于在不同请求间保持数据。 29. **Repeater和DataList控件**:这两个控件常用于数据绑定,展示列表或表格数据,支持模板...

Global site tag (gtag.js) - Google Analytics