详解ASP.NET状态管理方式优缺点

 

 

  一般而言,HTTP协议是非状态服务,它不保存任何用户请求信息。直至NetScape开始使用Cookies来保存用户请求信息,Web应用程序有了极大的发展。现在ASP.NET程序员可以使用很多种方式来保存用户请求信息。

  下面主要介绍ASP.NET关于状态管理的几种方式。

  客户端

  ASP.NET,提供了Cookies, QueryStrings (URL), Hidden fields, View State and Control state (ASP.NET 2.0),来管理客户端请求。

  一 Cookie

  Cookie是以文本存储于计算机中,使用name-value匹配。一般用户存储标识用户信息,如:用户名,用户使用配置等。虽然Cookie可以被加密存储,但不推荐在Cookie中保存用户密码。第二,Cookie的大小是限定的,所以不适合存储大型数据。

  Example:

  1.获取用户ID

   if  (Request.Cookies[ " UserId " !=   null
  lbMessage.text 
=   " Dear "   +  Request.Cookies[ " UserId " ].Value  +   " , Welcome to 
  our website ! "
   else  
  lbMessage.text 
=   " Guest,welcome to our website! "

  2.设置Cookie

  Response.Cookies[ " UserId " ].Value = username; 

  优点:
  使用简单

  缺点:
  1.客户端可以禁用Cookie
  2.Cookie在每次请求或发送时都会被加载,影响传输。
  3.易被攻破,所有不适合存储安全信息。

  二 Hidden fields(隐藏控件)

  Hidden field是在页面级保存信息。与其他用户标准控件的区别是,Hidden Field不被呈现在页面中。当页面提交的时候,Hidden Field中的值将被一同发送给服务端。虽有在ASP.NET 2.0中,我们可以使用ViewState来代替,但Hidden Fields依然可以用来存放一些不关键信息。

   protected  System.Web.UI.HtmlControls.HtmlInputHidden Hidden1; 
  
// to assign a value to Hidden field 
  Hidden1.Value = " Create hidden fields "
  
// to retrieve a value 
   string  str = Hidden1.Value; 

 

  优点:
  1.使用简单
  2.可以存储少量数据

  缺点:
  1.不安全,以明文的形式直接从网络传输

  三 View State(状态视图)

  状态视图ViewSate,可以用来为单独用户存储信息。你可以通过设置EnableViewState属性来控制ViewState的使用,在默认的情况下属性值为True.ViewSate在每次用户请求或服务端响应时,都会被传输。所以,为了减少网络带宽的使用,可以在不需要状态视图时设置EnableViewState属性值为False.ViewSate在页面中的存储是经过Base64转码的,增加了额外的数据量,所以一定要注意保存较少的ViewSate.

   //  Add item to ViewState 
  ViewState[ " myviewstate " =  myValue; 
  
// Reading items from ViewState 
  Response.Write(ViewState[ " myviewstate " ]); 

  优点:
  操作简单
  被加密
  可以在控件级别使用

  缺点:
  加密编码增加了页面的大小
  增价了网络传输

  四 Query strings

  Query String常用于页面传值。很多浏览器都会有长度限制,一般在255个字节。值得注意的是,尽量使用Server.UrlEncode,来避免一些意外情况,如Sql注入。

   string  productid;productid = Request.Params[ " productid "

 

 服务端

  一 Application

  Application在整个应用程序都是可见的,所有用户分享同一个Application.在ASP中,常用来存放链接字符串。

  Application.Lock(); Application[ " mydata " ] = " mydata "
  Application.UnLock(); 

  二 Session

  Session为每个用户单独存储用户信息。Session有三种存放方式。"inproc" , "sqlserver" , "stateserver.
  InProc,数据保存在服务端进程中。由于目前有600M的内存限制,可以导致进程重启,而失去所有的状态信息。
  SqlServer,存放与数据库之中,用户状态可以永久保留。
  StateServer,存放与另一台状态服务器中。

本文转自:http://dotnet.chinaitlab.com/ASPNET/732267.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值