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

 我来答
黑科技1718
2022-10-15 · TA获得超过5904个赞
知道小有建树答主
回答量:433
采纳率:97%
帮助的人:83万
展开全部

  现在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 ) 来管理客户端请求

  一 Cookie

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

  Example

   获取用户ID

  

  if (Request Cookies[ UserId ] != null) lbMessage text = Dear + Request Cookies[ UserId ] Value + Wele to our website! ; else lbMessage text = Guest wele to our website! ;

   设置Cookie

  

  Response Cookies[ UserId ] Value=username;

  优点

  使用简单

  缺点

   客户端可以禁用Cookie

   Cookie在每次请求或发送时都会被加载 影响传输

   易被攻破 所有不适合存储安全信息

  二 Hidden fields(隐藏控件)

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

  

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

  优点

   使用简单

   可以存储少量数据

  缺点

   不安全 以明文的形式直接从网络传输

  三 View State(状态视图)

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

  

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

  优点

  操作简单

  被加密

  可以在控件级别使用

  缺点

  加密编码增加了页面的大小

  增价了网络传输

  四 Query strings

  Query String常用于页面传值 很多浏览器都会有长度限制 一般在 个字节 值得注意的是 尽量使用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 数据保存在服务端进程中 由于目前有 M的内存限制 可以导致进程重启 而失去所有的状态信息

  SqlServer 存放与数据库之中 用户状态可以永久保留

  StateServer 存放与另一台状态服务器中

  

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

lishixinzhi/Article/program/net/201311/11294

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七鑫易维信息技术
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量500余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式