ASP.NET Application,Session,Cookie和ViewState等对象用法和区别_第1页
ASP.NET Application,Session,Cookie和ViewState等对象用法和区别_第2页
ASP.NET Application,Session,Cookie和ViewState等对象用法和区别_第3页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、asp.net application,session,cookie 和 viewstate 等对象用法和区别在 asp.net 中,有很多种保存信息的内置对象,如:application,session,cookie,viewstate 和 cache等。下面分别介绍它们的用法和区别。方法信息量大小作用域和保存时间应用范围保存位置application任意大小整个应用程序的生命期整个应用程序/所有用户服务器端cache任意大小可以根据需要设定整个应用程序/所有用户端服务器session小量,简单的数据用户活动时间+一段延迟时间(一般为 20 分钟)单个用户服务器端cookie小量,简单的数据

2、可以根据需要设定单个用户客户端viewstate小量,简单的数据一个 web 页面的生命期单个用户客户端隐藏域小量,简单的数据一个 web 页面的生命期单个用户客户端查询字符串小量,简单的数据请求直到下次页面跳转单个用户客户端1.application 对象application 用于保存所有用户的公共的数据信息,如果使用 application 对象,一个需要考虑的问题是任何写操作都要在 application_onstart 事件(global.asax)中完成.尽管使用 application.lock 和applicaiton.unlock 方法来避免写操作的同步,但是它串行化了对 a

3、pplication 对象的请求,当网站访问量大的时候会产生严重的性能瓶颈.因此最好不要用此对象保存大的数据集合. 下面我们做个在线用户统计的例子来说明这个问题:(以文件的形式存放网站总访问量)global.asax 类using system;using system.collections;using system.componentmodel;using system.web;using system.web.sessionstate;using system.io;/ global 的摘要说明。publicclass global : system.web.httpapplicatio

4、n/必需的设计器变量。private system.componentmodel.icontainer components = null;private filestream filestream;private streamreader reader;/读字符流private streamwriter writer;/写字符流public global()initializecomponent();protectedvoid application_start(object sender, eventargs e)applicationcurrentguests=0;/初始花为;files

5、tream = file.open(server.mappath(counts.text),filemode.openorcreate);/文件不存在,创建文件reader = new streamreader(filestream);/要读取的完整路径applicationallguests = convert.toint32(reader.readline(); /从当前流中读取一行字符并将数据作为字符串返回reader.close();/关闭流protectedvoid session_start(object sender, eventargs e)/当用户访问网站时,在线用户+,总访

6、问数+application.lock();/同步,避免同时写入applicationcurrentguests =(int)applicationcurrentguests+ 1;/总在线用户数applicationallguests =(int)applicationallguests+ 1;/访问网站的总用户数filestream = newfilestream(server.mappath(counts.text),filemode.openorcreate,fileaccess.readwrite);/writer = new streamwriter(filestream);/实现

7、一个写入流,使其以一种特定的编码向流中写入字符writer.writeline(applicationallguests.tostring();/把访问网站的总用户数再次写入到文件writer.close();/关闭写入流application.unlock();/同步结束protectedvoid session_end(object sender, eventargs e)/当前用户退出网站时,在线用户数量-1,application.lock();applicationcurrentguests =(int)applicationcurrentguests - 1;/总在线用户数量-1a

8、pplication.unlock();(2) webform1.aspxprivatevoid page_load(object sender, system.eventargs e)this.label1.text = 正在访问站点的用户数: + applicationcurrentguests.tostring();this.label2.text =访问过站点的总用户数: + applicationallguests.tostring();2.session 对象session 用于保存每个用户的专用信息.每个客户端用户访问时, 服务器都为每个用户分配一个唯一的会话 id(sessio

9、n id) . 她的生存期是用户持续请求时间再加上一段时间(一般是 20 分钟左右).session 中的信息保存在 web 服务器内容中,保存的数据量可大可小.当 session 超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用 session 对象使保存用户数据的方法效率很低.对于小量的数据,使用session对象保存还是一个不错的选择.使用session对象保存信息的代码如下:/存放信息sessionkey=value/读取数据string username=sessionkey.tostring();3.cookie 对象cooki

10、e 用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将cookie对象的expires属性设置为minvalue,则表示cookie永远不会过期.cookie存储的数据量很受限制,大多数浏览器支持最大容量为 4k,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性.使用 cookie 对象保存的代码如下:/存放信息re

11、sponse.cookieskey.value=value;/读取信息string userid=response.cookieskey.value;4.viewstate 对象viewstate 常用于保存单个用户的状态信息,有效期等于页面的生存期。跟隐藏控件相似。viewstate是在本页面之内各函数间进行传值的 , 至于为什么要使用这种方法是因为在一个事件发生之后 , 页面可能会刷新 , 如果定义全局变量会被清零 , 所以要使用 viewstate. viewstate容器可以保持大量的数据, 但是必须谨慎使用,因为过多使用会影响应用程序的性能。所有web 服务器控件都使用 viewst

12、ate 在页面回发期音保存自己的状态信息。 如果某个控件不需要在回发期间保存状态信息,最好关闭该对象的 viewstate,避免不必要的资源浪费。通过给page 指令添加“enableviewstate=false”属性可以禁止整个页面的viewstate。使用 viewstate 对象保存信息的代码如下。/存放信息viewstatekey=value;/读取信息string nameid=viewstatenameid.tostring();5.cache 对象cache对象用于在http请求间保存页面或数据。 该对象的使用可以极大地提高整个应用程序的效率。常用于将频繁访问的大量服务器资源存

13、储在内存中,当用户发出相同的请求后服务器不再次处理而是将cache 中保存的信息返回给用户,节省了服务器处理请求的时间。其生存期依赖于该应用程序的生存期。当重新启动应用程序时,将重新创建其 cache 对象的实例。使用 cache 对象保存信息的代码如下。/存放信息cachenameid=0001;/存放信息cache.insert(nameid,00011);/读取信息string nameid=cachenameid.tostring();6.隐藏域hidden 控件是属于 html 类型的服务器控件,使用此控件可以实现隐藏域的功能。其实此控件和其它服务器控件的使用没有太大区别,只是它不会

14、在用户端的浏览器中显示,始终处于隐藏状态。但是每次页面提交的时候,此控件和其它服务器控件一同提交到服务器端,因此在服务器端可以使用 value 属性获取或保存一些数据信息。使用 hidden 控件保存信息的代码如下。/存放信息hidden.value=0001;/获取信息string nameid=hidden.value;7.查询字符串查询字符串的方式是将要传递的值连接在 url 后面, 然后通过 response.redirect 方法实现客户端的重定向。这种方式可以实现在两个页面之间传递信息。由于url 的长度有一定的限制,因此不能传递太大的信息,加外安全性也不是很好。传递信息如下。问号后面格式 key1=value1&key2=value2response.redirect(list.aspx?na

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论