快速业务通道

详解ASP.NET的四种状态

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

这些状态的原理对于做.NET开发非常重要。现在详细解说一下。

视图状态:视图状态就在大家身边不知道大家是否注意。ASP.NET是基于服务其处理事件 的。当服务器处理完事件时,再返回本窗体时,如果没有视图状态,原来的数据将不会在有 。这样说也许会晕。举个列子,比如有一个网站需要你注册成为会员。当你填完信息,(一 般来说页面会转向别的地方)这里为了说明问题,我们让他返回原来的页面继续操作,如果 没有视图状态,则你以前填的数据都没有了。如果有视图状态,则原来的数据还在。试图状 态在一些时候很有用。比如说分级验证时。

那么.NET是用什么方法保持试图状态呢?这里微软采用了一种特殊的方法。在浏览器打开 网页的源代码,你会发现一段你在编辑网页时,没有添加的一个HTML控件。

形式是这样的:

<input type="hidden" name="_VIEWSTATE" id="_VIEWSTATE" value="一 些加密过的值"/>

这是.NET自动给你添加的。它也是视图状态能够实现的功臣。因为这个空间是隐藏的,所 以不会破坏页面的布局。空件中的value中的值就是就是各个空件以及控件中的数据(状态) 。这些数据是经过哈希函数加密过的。这是为了安全考虑。当网页提交时,浏览器首先将当 前网页中的各种状态(包括控件以及控件中的数据)保存到这个HTML字段中。当网页再次返 回浏览器时,在自动把这些状态返回给网页,这样网页也就恢复了状态。

再来讲讲视图状态需要注意的问题。

视图状态只能在本网页与服务器之间保持,不能在不同网页之间连接时保持。默认情况下 ,几乎所有的ASP.NET控件都有保持视图状态的功能。

视图状态有很多优点,但同样(世上每件事都具有两面性,一个好的技术也不列外)有些 缺点。首先是安全,虽然数据是经过加密,但对于黑客中的骨灰级人物,还是很不安全的。 再次,你可以想如果你的页面包括几百条记录,页面很复杂,这是必会影响网页的加载速度 。

应用程序状态(Application):Application对象是应用程序的全局性对象。用于存放应 用程序的全局共享资源。他的本质是HttpApplicationState类的一个实例。当用户第一次反 问某虚目录中的资源时,就被创建。也就是说网站第一次在互联网上发布,这时有一个用户 刚好访问你的虚拟目录资源,那么Application对象就已经建立。在资源与应用程序之间建立 了一个缓冲区。

应用程序状态只有在网站运行时存在。当应用程序推出或服务器关闭时(更惨一点服务器 崩溃了),应用程序状态中保存的数据机会丢失和损坏。所以对于需要永久保留的资源还是 在数据库中持久化保存的好。

介绍一些Application对象的一些操作方法。

Application对象当然是采用最经典的“键-值”对的字典方法来定义。其中键为字符串代 表Application对象的名称。值可以是任何类型的数据。(例如HTML,CSS,SQL都可以)。举个 例子:

Application["source"]="special source";

string message =Application["source"].ToString();

在Application中添加删除保存的对象。

Application.Add("source",''''special source");

Application.remove("source");

来一个狠一点的操作,把Application中的对象全部请出去。

Application.Clear();

或Appication.RemoveAll();

信息共享自然会引来一个问题,资源的同步竞争。这类问题解决当然要靠锁了。

Applicatin.Lock()//加锁锁定资源,不让其他进程访问。

functions(Application["source"]);//一些操作Application对象的操作。

Application.UnLock();//解除锁定。

会话状态(Session):Session对象用来保存单个用户的状态。在网站中,每个

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号