zoukankan      html  css  js  c++  java
  • ASP.NET2.0页面状态持续[转]

            我们知道,http是无状态的协议.所以在进行WEB应用程序开发的过程中,怎么在用户的多次请求中保持页面/用户信息会给我们造成一些小麻烦.ASP.NET1.1为我们提供了诸如ViewState,Session...等方式,在ASP.NET2.0中,则对这些方式进行了一些改进和扩展.

    • ViewState
      在ASP.NET1.1中,ViewState是通过客户端的html中的一个隐藏字段在客户端和服务器端进行信息的来回传送.这就会存在一个问题:如果信息量过大,这种数据的来回传递将会严重的影响程序的性能.(至今还记得,原来项目中的某处,客户需要一次显示2W多条数据在同一个页面上-----BT的需求.这个时候,由于页面的DataGird中的大量数据,使得在PostBack的时候直接把IIS给"干掉"了)一般对于这种BT的情况,在ASP.NET1.1中,我们会禁用DataGird中的ViewState,然后每次PostBack都重新进行绑定.如今,在ASP.NET2.0中提供了一种新的方式:将ViewState的数据保存在服务器端的Seesion中.我们的程序只需要做如下一点小小的改动.在需要将ViewState的数据放到服务器Seesion的页面中,重写PageStatePersister属性,如下:
          
      protected override PageStatePersister PageStatePersister { get { //return base.PageStatePersister; return new SessionPageStatePersister(this); } }
       
      这样,我们仍然可以按照原来的编码方式对ViewState进行操作,就象他仍然是在B/S之间来回传递.但是性能却能显著提高.
    • Session
      OK.上面提到了Session,我们也知道Seesion存储在服务器端,如果Seesion中的保存了大量数据,也会影响程序整体的性能.现在,我们还可以把Session放到数据库中.也相当的简单.我们只需要通过VS2005提供的ASPNET_REGSQL.EXE工具生成一个专门存放Session的数据库.然后,在我们的Web.config里面做如下配置:
          
      <sessionState mode="SQLServer" sqlConnectionString="data source=.; integrated security=true"> sessionState>
       

      同样,在编码的时候,我们仍然可以按照原来的方式进行,Asp.net2.0会帮我们把Session的信息保存在数据库中.当然和原来方式相比,加入了一个数据库的开销,可能性能方面还不知道孰优孰劣,不过通过数据库的持久化,我们就可以解决原来的Session过期的问题,而且通过数据库,可能在数据安全方面会得到提高.另外,我总觉得可以把Session中数据持久化这个功能可以派上大用场,但现在一直想不到一个适合的场景,也没看到相关的文章,就是一个感觉:)要注意的一点就是:因为Session中的数据要持久化到数据库中,所以,当我们把一些自定义的类往Session中放的时候,一定要记得给这个类打上[Serializable]!

                正所谓,凡事都没有完美的解决方案,Asp.net2.0为我们提供的新的页面持续的方法也不是完美的,至于孰优孰劣,就只有看具体的应用场合了.

  • 相关阅读:
    GPS授时服务器(卫星同步时钟)科普小知识
    GPS和北斗卫星授时技术在时频领域的应用和发展
    NTP时间同步服务器(NTP时间服务器)在北京邮电大学的应用案例
    北斗时钟源(GPS网络时钟源)在校园网络应用
    NTP时钟源(GPS时间源)介绍与分析 安徽京准电子科技
    搭建ntp时间服务器并配置集群自动时钟同步
    GPS北斗网络时间源在内网域控制器上的设置方法
    肺炎疫情过后最想干的几件事
    提升苏州城市地位的几个建议
    江苏省如要打造一线城市,很简单!
  • 原文地址:https://www.cnblogs.com/ghx88/p/417111.html
Copyright © 2011-2022 走看看