当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

6.4技术解惑

8/31/2020 9:56:04 PM 人评论

6.4技术解惑

ASP.NET内置对象的工作流程如图6-13所示。

6-13

图6-13 内置对象的工作流程

(1)应用场景

Cookie的典型应用场景是Remember Me服务,即用户的账户信息通过Cookie的形式保存在客户端,当用户再次请求匹配的URL的时候,账户信息会被传送到服务端,交由相应的程序完成自动登录等功能。当然也可以保存一些客户端信息,如页面布局以及搜索历史等。

Session的典型应用场景是用户登录某网站之后,将其登录信息存入Session,在以后的每次请求中查询相应的登录信息以确保该用户合法。当然还是有购物车等经典场景。

(2)安全性

Cookie将信息保存在客户端,如果不进行加密,无疑会暴露一些隐私信息,安全性很差。一般情况下敏感信息是经过加密后存储在Cookie中,但很容易被窃取。而Session只会将信息存储在服务端,如果存储在文件或数据库中,也有被窃取的可能,只是可能性比Cookie小了很多。

Session在全性方面比较突出的是存在会话劫持的问题,这是一种安全威胁,这在下文会进行更详细的说明。总体来讲,session的安全性要高于Cookie。

(3)性能

Cookie存储在客户端,消耗的是客户端的I/O和内存;而Session存储在服务端,消耗的是服务端的资源。但是session对服务器造成的压力比较集中,而Cookie很好地分散了资源消耗,就这点来说,Cookie是优于Session的。

(4)时效性

Cookie可以通过设置有效期使其较长时间存在于客户端,而Session一般只有比较短的有效期(用户主动销毁Session或关闭浏览器后引发超时)。

Application对象和Session对象的区别如表6-16所示。

表6-16 Application对象和Session对象的区别

对  象

信息量大小

保 存 时 间

应 用 范 围

保 存 位 置

Application

任意大小

整个应用程序的生命期

所有用户

服务器端

Session

小量,简单的数据

用户活动时间+一段延迟时间(一般分为20分钟)

单个用户

服务器端

Application用于保存所有用户的公共数据信息。如果使用Application对象,一个需要考虑的问题是任何写操作都要在Application_OnStart事件(global.asax)中完成。虽然使用Application.Lock和Applicaiton.Unlock方法可以避免写操作的同步,但是它串行化了对Application对象的请求,当网站访问量大时会产生严重的性能瓶颈,因此最好不要用此对象保存大的数据集合。

Session用于保存每个用户的专用信息,其生存期是用户持续请求时间再加上一段延长时间(一般为20分钟)。Session中的信息保存在Web服务器内容中,保存的数据量可大可小。当Session超时或被关闭时,将自动释放保存的数据信息。由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低。对于小量的数据,使用Session对象保存是一个不错的选择。

在ASP.NET中有很多种保存信息的对象,如Application、Session、Cookie、ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?为了更清楚地了解,我们总结出每一种对象应用的具体环境,如表6-17所示。

表6-17 Application、Session、Cookie、ViewState和Cache的选择

方  法

信息量大小

保 存 时 间

应 用 范 围

保 存 位 置

Application

任意大小

整个应用程序的生命期

所有用户

服务器端

Session

小量、简单的数据

用户活动时间+一段延迟时间(一般约为20分钟)

单个用户

服务器端

Cookie

小量、简单的数据

可以根据需要设定

单个用户

客户端

Viewstate

小量、简单的数据

一个Web页面的生命期

单个用户

客户端

Cache

任意大小

可以根据需要设定

所有用户

服务器端

隐藏域

小量、简单的数据

一个Web页面的生命期

单个用户

客户端

查询字符串

小量、简单的数据

直到下次页面跳转请求

单个用户

客户端

Web.Config文件

不变或极少改变的小量数据

直到配置文件被更新

单个用户

服务器端


相关教程

共有条评论 网友评论

验证码: 看不清楚?