.Net 我的学习之路(五) --- Asp.Net 页面状态的实现原理

来源:互联网 发布:修改身份证软件下载 编辑:程序博客网 时间:2024/05/21 21:49

    页面状态机制的具体实现原理

 

   上次我们讲到了Asp.net提供了一系列的维持页面状态的机制,有Session, Cookie, ViewState ApplicationCacheHiddenField 等。这次我来讨论一下一些机制是如何实现的。

  • SessionSession的实现是依赖于SessionID的,每次client端访问server端的时候,服务器都会给client分配一个SessionID,下次client再次访问的时候,在Request里面把这个SessionID一起提交给ServerServer就能根据Request里面的SessionID来找到在Server端所储存的数据了。那么现在的问题就是这个SessionIDclient端被放在哪里了呢?答案就是Cookie中,但是如果client端禁用了Cookie,那这个SessionID又该怎么办呢?哈哈,还可以通过QueryString来传递。所以Session机制的实现是依赖于CookieQueryString的。

  • ViewState。前文提到,在ViewState中存放的对象必须是可以序列化的对象,这是和它的实现机制有很大关联的。序列化可以把内存中的对象转变为string,还可以根据string转变回内存中的对象,这种机制是方便了我们进行对象的持久化。Asp.net把放入ViewState中的对象作为一个整体序列化成为一个HiddenFieldstringValueHiddenField前文已经提到了,是一个页面的隐藏域,每次Postback之后,这个HiddenField中的value就会被传回并被反序列化为ViewState。所以ViewState的实现就是依赖于HiddenField,你可以看见每个页面再Renderclient端的时候都会带有一个这样的HiddenField, <input type="hidden"name="__VIEWSTATE" id="__VIEWSTATE"value="XXX"/>。看,这就是在Client端的ViewState了,不过由于是序列化过的,我也不知道里面是什么了。所以ViewState是不能在Client端进行操作的,不过普通的HiddenField就可以哦

 

  • 其他的页面状态实现的机制就比较简单。Cookie是在Client端以文件方式存储的。ApplicationCache是在server端内存中存储。QueryString是在Url里面存储。HiddenField是以Html元素存储。

     

     希望了解了这些机制以后,能使你更清楚地了解什么时候该使用哪种机制来存储页面的状态。

 



  • .Net 我的学习道路(一)--- 代码人的素质
  • .Net 我的学习道路(二)--- 语法
  • .Net 我的学习之路(三)--- Asp.net
  • .Net 我的学习之路(四) --- Asp.Net 页面状态
  • .Net 我的学习之路(五) --- Asp.Net 页面状态的实现原理
原创粉丝点击