第6章ASP应用程序状态管理.ppt
《第6章ASP应用程序状态管理.ppt》由会员分享,可在线阅读,更多相关《第6章ASP应用程序状态管理.ppt(18页珍藏版)》请在三一办公上搜索。
1、第6章 ASP.NET应用程序状态管理,如果读者曾经有过开发Windows应用程序的经验,可能不太会留意维护应用程序状态,因为应用程序本身就在客户端运行,可以直接在内存中维护其应用程序状态。但是对于ASP.NET应用程序来说,事情不那么简单了,因为ASP.NET应用程序在服务器端运行,客户端使用无状态的HTTP协议对ASP.NET应用程序发出请求,ASP.NET应用程序响应用户请求,向客户端发送请求的HTML代码,服务器并不会维护任何客户端状态。考虑一个有着成千上万并发用户的服务器,如果为每个用户都维护状态的话会耗费非常多的资源。对于一个Web应用程序来说,通常需要维护应用程序的状态。比如电子
2、商务网站的购物车,当客户在多个页面中选择商品时,需要为其维护一个所选商品的列表。ASP.NET为解决状态维护的问题提供了多种方法,本章将详细讨论如何使用这些方法为ASP.NET应用程序添加状态管理功能。,6.1 ASP.NET状态管理简介,由于使用无状态的HTTP协议作为Web应用程序的通信协议,当客户端每次请求页面时,ASP.NET服务器端都将重新生成一个网页的新实例。这意味着客户端用户在浏览器中的一些状态或者是一些修改都将丢失。比如一个客户管理系统,用户在很多文本框中输入了内容,当点击提交按钮到服务器后,从服务器返回的将是一个全新的网页,用户所添加的内容将全部丢失。记得在使用ASP的时候,
3、笔者为了保存每个文本框控件中的值信息,在数据提交前使用了大量的Session变量来保存每个文本框的值,并在页面重新生成后将这些会话变量中的值一一赋给每个控件。这是一件相当费时费力的工作,可谓事倍功半。在ASP.NET最初推出以后,让笔者眼前一亮的是,当页面回发(Postback)后,控件依然能保存其输入的值,ASP.NET使用ViewState技术,也称为视图状态为控件保存了状态信息,ASP.NET中提供了如下几大用于状态管理的技术:,6.2 ViewState视图状态,视图状态可以说是应用最为广泛的一种技术,几乎每个ASP.NET服务器控件都具有EnableViewState属性,允许控件在
4、页面回送时保存其属性值。开发人员也可以使用Page.ViewState集合类添加自己的状态数据,可以使用这个属性保存简单的数据类型或者是自定义的对象类型。例如可以使用视图状态保存一个计数器的值,代码如下:protected void Page_Load(object sender,EventArgs e)ViewStateCounter=5;可以看到ViewState是一个字典类型的对象,使用ViewStatekey=value的格式来设置值,如果在集合中存在指定键的值,则进行替换,否则将自动创建一个新的键值对。,6.2.1 视图状态原理,应用程序在运行时,ASP.NET引擎会自动在源代码的尾
5、部嵌入的一个隐藏域(HiddenField),命名为_VIEWSTATE。_VIEWSTATE以键/值对集合的形式保存页面中控件的状态数据,_VIEWSTATE将这些值以Base64编码格式编码字符串,如下代码所示:,6.2.2 在视图状态中存储对象,在ViewState中,可以存储用户自定义的对象数据,但是必须知道,当存储一个自定义对象时,ASP.NET必须能够转换该对象为字节流以便于将对象添加到页面隐藏域中进行保存。这意味着自定义对象必须支持序列化,否则ASP.NET将会抛出异常。下面创建一个名为ViewStateSample的ASP.NET Web站点,右击网站项目名称,选择“添加新项”
6、菜单项,添加一个新的类,命名为Book.cs,如图所示:,6.2.3 视图状态的安全,ViewState中的数据以Base64编码的格式保存在客户端浏览器中,目前,可以使用很多工具解码Base64编码的字符串,例如可以使用一款名为ViewState Decoder的工具来直接查看视图状态的数据结构,如图所示。,6.3 跨页传递信息,使用视图状态有一个很大的限制就是不能跨页传递信息,如果用户导航到其他页面,那信息将会被丢失。本节将讨论如何在多个页面之间传递信息,可以使用查询字符串或者是跨页提交技术。如果这些技术都不能满足应用程序的要求,那么可以考虑使用cookies、会话状态或者是应用程状态,本
7、章以后将会详细的讨论。,6.3.1 查询字符串,最常用的方法应该是在URL中使用查询字符串来传递信息,现今网络上多如牛毛的网站都使用这种技术来在页面之间传递信息。例如如果从每一个页面上获取了当前用户的用户ID,希望在第二个页面上显示关于此ID的详细信息,可以使用如下的查询字符串:http:/,6.3.2 跨页回送技术,Postback技术能够将页面发送到服务器并从服务器重新获取当前的页面,这个技术为在ASP.NET中实现类似Windows桌面应用程序的响应效果提供了重大的作用。跨页回送是postback技术的扩展,使PostBack能够跨越多个页面。ASP.NET的中大多数按钮控件都提供了一个
8、名为PostBackUrl的属性,该属性定义在IButtonControl接口中,任何实现了该接口的控件比如ImageButton、LinkButton和Button控件都具有这个属性用来实现控页回送。只要为按钮控件的PostBackUrl指定另一个Web页面的Url,当用户点击按钮时,页面将被回送到新的Url页面,回送的页面中将包括原来页面中所有的输入控件的值。,6.4 使用Cookie保存会话信息,当笔者第一次听到浏览器Cookie这个词时,对这个词充满了好感,Cookie中文称为小甜饼,总让人想象一些美好的东西。但是后来几年,这个技术被一些冲满恶意的用户利用来收集用户敏感信息,造成了网民
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP 应用程序 状态 管理
链接地址:https://www.31ppt.com/p-6154025.html