Session,Cookie,Application和ViewState的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、Application
使用它时要注意避免性能的降低,存储的数据尽可能提供给客户只读的功能。

使用:
Global.asax:
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
Application["exp"] = "aaaa"; //object类型
}
</script>
使用:读操作
string str = Application["Exp"].ToString();
使用:写操作
Application.Lock();
Application["Exp"] = "write";
Application.UnLock();
由于Application状态对于所有客户都是共享的,如果客户只是读取该数据,则没有什么问题,一旦要进行写操作,就不能保证线程的安全以及出现同步争用的问题。

我们可以使用HttpApplicationStateLock类,它派生于ReadWriteObjectLock类,它提供了读/写锁的两种属性。

在下,隐式地调用了AcquireWrite()和AcquireRead()方法以保证避免上面的问题。

当然,我们也可以显示地使用Lock()和Unlock():
二、Session
Session["Exp"] = "write";
Session State被同一个进程和AppDomain(App域)维护。

Session State的特点是为每一个特定的客户创建状态以维护客户的信息,这些状态信息存储在服务器端的默认的会话状态配置中。

提供了一种加密机制和编码算法生成自己的Session Key。

这是非常必要的,因为知道了你的Session Key,就有权限访问指定的页面了。

但是Session和客户端的Cookie是有关的,当客户关掉Cookie时,Session就失效了。

三、HttpCookie
使用:赋值
if (Request.Cookies["Expr"] == null)
{
HttpCookie cokExpr = new HttpCookie("Expr");
cokExpr.Value = "write";
Response.Cookies.Add(cokExpr);
}
使用:取值
string str = Request.Cookies["Expr"].Value;
每个Cookie存储了多个名/值对,我们可以通过HttpCookie类的值集合来访问它,也可以间接地通过类所提供的索引器访问
由于Cookie存储的信息是放到客户端的,用户在访问服务器端页面时,必然在客户端和服务器端之间频繁交换信息,影响了程序的性能。

而Session由于存储在服务器内存中,因此不存在这个问题。

不过,Session存储的信息是临时的,用户一旦关闭浏览器,状态即失去。

而Cookie则相反。

四、ViewState
主要是指控件和页面的状态信息,它以_VIEWSTATE值传递给服务器端
ViewState["Exp"] = "write";
string str = ViewState["Expr"].ToString();
Application、Session和Cookie,可以借用Carfield的总结:
COOKIE 是本地文件,是 40 大盗在阿里巴巴家做的记号,或者是送牛奶的人在你家门口钉的箱子。

SESSION 是服务器端内存,是你洗澡时浴池发给你的钥匙。

自己专用,可以开自己的好多箱子。

APPLICATION 是公共浴池。

在这里能看见所有人
方法信息量大小保存时间应用
范围
保存
位置
Application 任意大小整个应用程序的生命期所有
用户
服务
器端
Session 小量、简单的数据用户活动时间+一段延迟时间
(一般为20分钟)
单个
用户
服务
器端
Cookie 小量、简单的数据可以根据需要设定单个
用户
客户

Viewstate 小量、简单的数据一个Web页面的生命期单个
用户
客户

Cache 任意大小可以根据需要设定所有
用户
服务
器端
隐藏域小量、简单的数据一个Web页面的生命期单个
用户
客户

查询字符串小量、简单的数据直到下次页面的跳转请求单个客户
用户端
Web.Config文件不变、或极少改奕的
小量数据
直到配置文件被更新
所有
用户
服务
器端。

相关文档
最新文档