炫浪网首页 | 加入收藏夹 登录 | 注册
logo
网站导航: 炫浪首页游戏频道女性风采科技学院精品素材桌面壁纸BT影视网络社区健康生活
热门栏目: 炫友贴图编程开发硬件学堂博客空间游戏攻略游戏资源时尚女性美容护肤教程下载
炫浪(科技.学院)
 | 网站首页 | 系统软件 | 图形图像 | 编程开发 | 网络应用 | 硬件学堂 | 办公应用 | 〖图书馆〗 | 
  您现在的位置: 炫浪学院 >> 编程开发 >> 网页制作 >> Asp.net >> 正文

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

炫浪 科技.学院 时间:2007-12-11 16:46:28 来源:炫浪 发表评论 社区讨论

现在ASP.NET程序员可以使用很多种方式来保存用户请求信息。下面主要介绍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,存放与另一台状态服务器中。

Session["UserId"]="UserId";
string UserId = Session["UserId"].ToString();

 

  • 上一篇文章:

  • 下一篇文章:
  • 发 表 评 论
    姓 名: 主 页:
    评 分: 1分 2分 3分 4分 5分
    内 容:
    频 道 推 荐

    优秀程序员的两大要

    信息时代如何成为一

    如何成为一名C++程序

    Java程序员认证模拟

    高级程序员级考试大

    初级程序员级考试大
    最 新 热 门
    相 关 文 章
    新.Net开发必备工具详解之Snippet 
    在DNN 4.X中自定义登录界面
    .net开发:如何为程式码加上行号
    While deploying... 错误的解决办法
    aspx页面作为模板引擎的一种实现
    字符串和十六进制之间的转换方法
    如何使用ASP.Net加密Cookie
    使用ASP.Net中的自定义控件
    Configuration类在网页实现web.con
    ASP.Net MVC框架配置与分析
    相 关 新 贴
    广 告 展 示

    炫浪网 业务、广告:web#xvna.com (请将#换成@) 业务广告QQ 业务广告QQ2
    Copyright @ 2006-2007 All Right Reserved (主域名 xvna.com 粤ICP备07040110号)
    【声明】本网站部分内容属社区网友发布,本网站仅提供网友交流平台,但有权在本网站范围内引用、发布、转载来自论坛网友发布的内容。网友发布内容纯属个人行为,与本网站立场无关。本网站对于论坛网友发布的内容所引发的版权、署名权的异议及纠纷,不承担任何责任。其他媒体转载须事先与原作者和本网站联系。