ASPnet4高级程序设计【状态管理】.ppt

上传人:少林足球 文档编号:3715731 上传时间:2019-09-21 格式:PPT 页数:44 大小:640.08KB
返回 下载 相关 举报
ASPnet4高级程序设计【状态管理】.ppt_第1页
第1页 / 共44页
ASPnet4高级程序设计【状态管理】.ppt_第2页
第2页 / 共44页
ASPnet4高级程序设计【状态管理】.ppt_第3页
第3页 / 共44页
ASPnet4高级程序设计【状态管理】.ppt_第4页
第4页 / 共44页
ASPnet4高级程序设计【状态管理】.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《ASPnet4高级程序设计【状态管理】.ppt》由会员分享,可在线阅读,更多相关《ASPnet4高级程序设计【状态管理】.ppt(44页珍藏版)》请在三一文库上搜索。

1、ASP.NET4 高级程序设计,状态管理,本节内容,视图机制 隐藏域 Cookie机制 Session机制 Querystring机制 应用程序状态 配置文件 跨页传递,Web应用无状态特点,客户端,服务器端,请求,生成对象数据,处理对象数据,处理结果,返回,销毁对象,再次请求,Web应用无状态特点,基于HTTP协议的 每次访问完后,都将与服务器端断开连接 能够同时处理多个请求(有状态的情况下,服务器内存可能会崩溃) 但给数据处理带来了不便(新的请求可能会使用上一次请求的处理的结果),A状态管理,提供了多种机制 根据存储的数据、安全性等因素考虑选择什么机制 可多种机制共存,本节内容,视图机制

2、隐藏域 Cookie机制 Session机制 Querystring机制 应用程序状态 配置文件 跨页传递,视图机制,单个页面保存数据第一选择 在针对页面的连续请求过程中,视图数据会在客户端与服务器端不断的传递 体现形式 服务器端:键值对的形式 客户端:加密后的字符串,保存在隐藏域中 操作方式 服务器端:ViewState“Key” 客户端:无法修改,视图机制示例,页面请求数 Viewstate“count”,视图与对象序列化,类对象序列化 类必须有serializable特性serializable 所有的基类必须具有serializable特性 所有的属性必须是可序列化的数据类型,若不想序

3、列化某个属性,需要标识nonserializable ViewState“key”=对象;,对象视图的示例,serializable Class Custom Public string FirstName; Publis string LastName; Custom c=new Custom(); Viewstate“custom”=c;,视图机制优缺点,优点 在页面访问过程中可以保持数据状态 缺点 增加了访问负载 什么情况下,考虑不使用视图 核心数据 被多个页面使用的数据 存储的信息量大,服务器控件与视图,服务器控件很多属性都是基于视图的 页面访问过程中,会加载视图,A禁用视图,Enab

4、leviewstate 禁用页面视图 禁用控件视图 ViewStateMode,视图安全,默认情况下,视图状态数据存储在页上的隐藏字段中,并使用 Base64 编码机制进行编码 可能被恶意用户截获和读取 为了保证安全,可以对视图数据进行加密 ViewStateEncryptionMode=true 对视图状态数据进行加密可能会影响应用程序的性能。因此,如不需要,请不要使用加密.,本节内容,视图机制 隐藏域 Cookie机制 Session机制 Querystring机制 应用程序状态 配置文件 跨页传递,隐藏域,ASP.NET 允许您将信息存储在 HiddenField 控件中, 隐藏域在浏览

5、器中不以可见的形式呈现 当向服务器提交页时,隐藏域的内容将在 HTTP 窗体集合中随同其他控件的值一起发送 恶意用户可以很容易地查看和修改隐藏域的内容。请不要在隐藏域中存储任何敏感信息或保障应用程序正确运行的信息,本节内容,视图机制 隐藏域 Cookie机制 Session机制 Querystring机制 应用程序状态 配置文件 跨页传递,Cookie机制简介,Cookie 保存在客户端设备上(客户端浏览器会话的内存或磁盘),当浏览器请求某页时,客户端会将 Cookie 中的信息连同请求信息一起发送 服务器可以读取 Cookie 并提取它的值 Cookie 与网站关联,而不是与特定的页面关联

6、常用于保存当前用户信息,以指示该用户已经在您的应用程序中进行了身份验证,Cookie使用示例,输出Cookie到客户端 在服务器端访问Cookie,多值 Cookie,Response.Cookies“userInfo“userName“ = “patrick“; Response.Cookies“userInfo“lastVisit“ = DateTime.Now.ToString(); Response.Cookies“userInfo“.Expires = DateTime.Now.AddDays(1); HttpCookie aCookie = new HttpCookie(“user

7、Info“); aCookie.Values“userName“ = “patrick“; aCookie.Values“lastVisit“ = DateTime.Now.ToString(); aCookie.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(aCookie);,控制 Cookie 的范围,默认情况下,一个站点的全部 Cookie 都一起存储在客户端上,而且所有 Cookie 都会随着对该站点发送的任何请求一起发送到服务器 可以通过两种方式设置 Cookie 的范围: 将 Cookie 的范围限制到服务器上的某个

8、文件夹,这允许您将 Cookie 限制到站点上的某个应用程序。 将范围设置为某个域,这允许您指定域中的哪些子域可以访问 Cookie。,控制 Cookie 的范围,将 Cookie 限制到某个文件夹或应用程序 设置cookie的Path属性 限制 Cookie 的域范围 设置cookie的domain属性 可通过此设置创建可在多个子域间共享的 Cookie,修改或删除cookie,Cookie的修改删除操作,都是创建新的cookie覆盖旧cookie 删除cookie:创建一个与要删除的 Cookie 同名的新 Cookie,并将该 Cookie 的到期日期设置为早于当前日期的某个日期 修改或

9、删除子键 修改 删除,Cookie注意事项,安全性 恶意用户可通过多种方法访问 Cookie 并读取其中的内容。建议不要将敏感信息(如用户名或密码)存储在 Cookie 中。 Cookie 以明文形式在浏览器和服务器间发送,任何可以截获 Web 通信的人都可以读取 Cookie。可以设置 Cookie 属性,使 Cookie 只能在使用安全套接字层 (SSL) 的连接上传输。 大小限制 大多数浏览器对 Cookie 的大小有 4096 字节的限制,尽管在当今新的浏览器和客户端设备版本中,支持 8192 字节的 Cookie 大小已愈发常见 禁用 有些用户禁用了浏览器或客户端设备接收 Cooki

10、e 的能力,因此限制了这一功能,本节内容,视图机制 隐藏域 Cookie机制 Session机制 Querystring机制 应用程序状态 配置文件 跨页传递,Session介绍,ASP.NET 应用程序启用会话状态时,将检查应用程序中每个页面请求是否有浏览器发送的 SessionID 值。如果未提供任何 SessionID 值,则 ASP.NET 启动一个新会话,然后将该会话的 SessionID 随响应一起发送到浏览器 会话由一个可以使用 SessionID 属性读取的唯一会话标识符标识 默认情况下,SessionID 值存储在 cookie 中,但也可以配置应用程序,将 SessionI

11、D 值存储在 URL 中 Session状态使用的范围:使用同一个客户端(浏览器实例)访问同一个应用程序的所有页面,Session使用,Session“key”=value; 会话变量集合按变量名称或整数索引来进行索引 仅需通过名称引用会话变量即可创建会话变量,无需声明会话变量或将会话变量显式添加到集合中 默认情况下,会话变量可以为任何有效的 .NET 类型,Session示例,用户登录信息,Session生命周期,默认情况下,Session 的超时时间(Timeout)是20分钟,用户保持连续20分钟不访问网站,则Session被收回 可在程序中进行设置: Session.Timeout =

12、 “30“; 在配置文件中设置超时时间: sessionState配置节,本节内容,视图机制 隐藏域 Cookie机制 Session机制 Querystring机制 应用程序状态 配置文件 跨页传递,查询字符串,通过URL地址传递数据的方式 格式:?key1=value1&key2=value2 访问:Request.QueryString“key名称”,查询字符串使用注意,在查询字符串中传递的信息可能会被恶意用户篡改。不要依靠查询字符串来传递重要的或敏感的数据 大多数浏览器和客户端设备会将 URL 的最大长度限制为 2083 个字符,所以不能通过查询字符串传递大数据信息,本节内容,视图机制

13、 隐藏域 Cookie机制 Session机制 Querystring机制 应用程序状态 配置文件 跨页传递,应用程序状态,应用程序状态是可供 ASP.NET 应用程序中的所有类使用的数据储存库 它存储在服务器的内存中 与特定于单个用户会话的会话状态不同,应用程序状态应用于所有的用户和会话 应用程序状态用于存储那些数量较少、不随用户的变化而变化的常用数据,应用状态使用,应用程序状态存储在 HttpApplicationState 类的实例中。此类公开对象的键值字典 HttpApplicationState类通常通过 HttpContext 类的 Application属性访问 在web窗体中,

14、直接通过Page.Application访问,Application使用示例,网站访问计数器,Application与session比较,相同点 都是存储在服务器端 不同点 Application是全局的存储机制,可以在所有页面中访问 Session是局部的(即针对每个会话),只能在自己的会话中访问,应用状态使用注意,由于应用程序状态存储在内存中,因此比将数据保存到磁盘或数据库中速度更快。但是,在应用程序状态中存储较大的数据块可能会耗尽服务器内存 由于应用程序状态存储在服务器内存中,因此每当停止或重新启动应用程序时应用程序状态都将丢失 应用程序状态不能在为同一应用程序服务的多个服务器间 应用程

15、序状态采用自由线程模式,即应用程序状态数据可由多个线程同时访问。因此,必须确保通过包含内置同步支持,以线程安全的方式进行应用程序状态数据更新,本节内容,视图机制 隐藏域 Cookie机制 Session机制 Querystring机制 应用程序状态 配置文件 跨页传递,配置文件,配置文件是可以按需要更改的 XML 文件 可以使用配置文件来保存应用程序运行环境信息 更改设置,而不必重编译应用程序,本节内容,视图机制 隐藏域 Cookie机制 Session机制 Querystring机制 应用程序状态 配置文件 跨页传递,IsPostBack,指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问 如果是为响应客户端回发而加载该页,则为 true;否则为 false。 通过判断IsPostBack来进行复杂的页面数据初始化工作 验证示例,跨页传递,PostBackUrl:回发地址 PreviousPage:获取向当前页传输控件的页 IsCrossPagePostBack:指示跨页回发中是否涉及该页,如何访问原页面中的控件,通过PreviousPage.FindControl查找控件 如果控件是在其他容器类控件中,则需要先找到容器类控件对象,然后调用容器类控件对象的FindControl方法查找指定控件,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1