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

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

 

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

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

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

 

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

     

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

 



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值