4.4 ASP.NET客户端状态

  Web开发不像软件开发,Web应用实际上是没有状态的,这就说明Web应用程序不自动指示序列中的请求是否来自相同的浏览器或客户端,也无法判断浏览器是否一直在浏览一个页面或者一个站点,也无法判断用户执行了哪个操作并统计用户的喜好。

4.4.1 视图状态
  从上面的章节中可以知道,当服务器每次的往返过程,都将销毁页面并重新创建新的页面。如果一个页面中的信息超出了页面的生命周期,那么这个页面中的相关信息就不存在了。如果注销了页面的信息,那么用户的一些信息可能就不存在了。

  在ASP.NET中,网页包含视图状态来保存用户的信息,视图状态在页面发回到自身时,跨页过程存储和用户自己的页面的特定值,视图状态的优点如下所示。
?1)不需要任何服务器资源。
?2)在默认情况下,对控件启用状态的数据进行维护,不会被破坏。
?3)视图状态的值经过哈希运算和压缩保护,安全性更高。

  视图状态同样有一些缺点,缺点如下所示。
?1)视图状态会影响性能,如果页面存储较大较多的值,则性能会有较大的影响。
?2)在手机,移动终端上,可能无法保存视图状态中使用的值。
?3)视图状态虽然安全性较高,但是还是有风险,如果直接查看页面代码,可以看到相应代码。

4.4.2 控件状态
  ASP.NET中还提供了控件状态属性作为在服务器往返过程中存储自定义控件中的数据的方法。在页面控件中,如果有多个自定义控件使用多个不同的控件来显示不同的数据结构,为了让这些页面控件能够在在页面上协调的工作,则需要使用控件状态来保护控件,同时,控件状态是不能被关闭的。同样,控件状态也有它的优点,优点如下所示。
?1)与视图状态相同的是,不需要任何服务器资源。
?2)控件状态是不能被关闭的,提供了控件管理的更加可靠的方法。
?3)控件状态具有通用性。

4.4.3 隐藏域
  在ASP中,通常使用隐藏域保存页面的信息。在ASP.NET中,同样具有隐藏域来保存页面的信息,作为维护页面状态的一种形式,但是隐藏域的安全性并不高,最好不要在隐藏域保存过多的信息。隐藏域具有以下优点。
?1)不需要任何服务器资源。
?2)支持广泛,任何客户端都支持隐藏域。
?3)实现简单,隐藏域属于HTML控件,无需像服务器控件那样有需要编程知识。

  而隐藏域具有一些不足,如下所示。
?1)具有较高的安全隐患。
?2)存储结构简单。
?3)同样,如果存储了较多的较大的值,则会导致性能问题。
?4)如果隐藏域过多,则在某些客户端中被禁止。
?5)隐藏域将数据存储在服务器上,而不存储在客户端。

注意:如果开发中,页面的隐藏域过多,这些隐藏域被存储在服务器。当客户端浏览页面的时候,会有一些防火墙扫描页面,以保证操作系统的安全,如果页面的隐藏域过多,那么这些防火墙可能会禁止页面的某些功能。

4.4.4 Cookie
  Cookie在客户端用户保存网站的少量的用户信息,服务器可以通过编程的方法获取用户信息,Cookie信息和页面请求通常一起发送到服务器,服务器对客户端传递过来的Cookie信息做处理。通常Cookie保存用户的登录状态、用户名等基本信息等等,在后面的章节会详细介绍使用ASP.NET操作Cookies。

4.4.5 客户端状态维护
  虽然使用某些客户端状态并不使用服务器资源,但是这些状态都具有潜在的安全隐患,如Cookie。非法用户可以使用Cookie欺骗来攻击网站进行用户信息的获取,不过使用客户端状态能够使用客户端的资源从而提高服务器性能。使用客户端状态,虽然有安全隐患,但是具有良好的编程能力,以及基本的安全知识,能够较好的解决安全问题,同时也能够提高服务器性能。下面小结了一些客户端状态的优缺点。
?1)视图状态:推荐当存储少量挥发到自身的页面的信息时使用。
?2)控件状态:不需要任何服务器资源,控件状态是不能被关闭的,提供了控件管理的更加可靠和更通用的方法。
?3)隐藏域:实现简单,但是在应用程序中会造成一些安全隐患。
?4)Cookie:实现简单,同样也能够简单的获取用户的信息,但是Cookie有大小的限制,不适宜存储大量的代码。

加支付宝好友偷能量挖...


评论(0)网络
阅读(113)喜欢(0)Asp.Net/C#/WCF