ASP.NET状态保存方法

ASP.NET状态保存分为客户端保存和服务器端保存两种:
使用客选项储页信息不使用服选项往往具有最低的安全性但具有最快 的服器性能,因为对源的要求是适度的。但是,由于必将信息送到客端来行存,因此于以这种方式可以存多少信息存在一定的限制
客户端保存的方式一般有如下4
1     ViewState:
利用场合为:同一的多个保留多用于客户端一些事件典型利用场合页面信息重置 登陆出错次数统计Grid排序
优点不利用服务器资源实现简单相对安全性因为经过哈希计算压缩并且针对 Unicode 现进
缺点因为ViewState存储页面本身所以无法存储并且通过源文件可以看见其中虽然经过哈希计算压缩仍有篡改风险
可存储类型string,integer,bool,array,arr aylist,hashtable以及其他可以序列化的类型
2     HiddenField:
利用场合为:存储少量页面经常改动的信息多和客户端脚本一块使用典型利用场合客户端经历一系列验证之后服务器回发服务器客户端HiddenField获取进行处理例如LeyserHomepage删除一项产品需要客户端弹出确认Form用户确认之后PostBac k服务器进行数据库Delete操作用户确认删除时当前删除的产品ID存放到一个HiddenField然后执行 Form(0).submit回发服务器服务器HiddenField获取产品ID进行数据库操作
优点不使用服务器资源 广泛支持实现简单
缺点:安全性不高因为包含页面进行发送所以可以通过源文件看见他的内容存储结构仅仅支持string,integer,bool,array,arraylis t简单的数据结构并且在其只存放简单的单值若要存放多值需要额外编码存储因为存储页面本身所以 无法存储较大而且数据防火墙代理阻止 注意 使用了HiddenField之后需要回发服务器进行 处理应该使用Http Post方法不是Http Get方法(通过URL请求访问)
3     Cookie:
利用场合存储少量经常改动的信息典型利用场合登陆过的网站保存登陆用户名用户输入提供方便 还有一些用户自定义项目上保存用户的个性化设置
优点不使用服务器资源实现简单可配置到期时间
缺点大小受到限制一般浏览器支持的最大Cookie 容量4096字节客户端用户可能会配置拒绝Cookie安全性保存在客户端信息可能会被恶意用户修改或者获取所以不应该保存敏感信息持久保存期限受到客户端的配置影响
Cookie 通常用于 存取已知用自定内容的个性化情况。在大多数此情况中,Cookie 是作标识而不是身份验证,所以在 Cookie 中只存 名、账户名或唯一用 ID(例如 GUID)并使用它来访问站点的用个性化是足的了
4     QueryString:
利用场合 信息一页传递给另一页最简单方法
优点不使用服务器资源支持广泛实现简单
缺点安全性因为直接URL暴露用户 所以篡改风险容量有限一般的浏览器都有255字符的限制只有在通 URL 页时查询字符串才是可行的选择不能从已提交器的页读 查询字符串
 
视图态:需要将回到自身的少量信息。ViewState 属性的使用将提供具有基本安全性的功能。   
藏域:需要将回到自身或另一少量信息,并且不需要高的安全性。 客户端事件只能在提交到服器的上使用藏域。 
Cookie:需要在客端存少量信息并且不需要高的安全性。个性化     
查询字符串 可以将少量信息从一页传输到另一,并且不需要高的安全性。 页面跳转 只有在求同一,或通过链求另一页时,才能使用查询字符串。   
服务器端保存方式一般有如下3种:
储页信息的服器端选项往往比客选项具有更高的安全性,但它可能使用更多的 Web 源,可能在信息存时导致可放性问题
1     Application:
利用场合所有的请求都会需要的 一些共有资源最先一个请求获取之后拿出来共享其他的请求就不用浪费资源进行再次获取典型利用场合一个股市 Web 站点可能在一天中 5 从数据库获取大量的金融股票信息(也 40 MB 的数据),然后将些信息存在用程序状中,这样所有以后的求都可以在用程序状访问这些信息。果是极大地提高了求的性能,因为传入的求不需要跨程、跨算机或数据的往返程。
        '首次Http Get請求
        If Not Me.IsPostBack Then
            '先判断Application中是否已経有了緩存
            If Application.Item("Database") Is Nothing Then
                '若没有,DataCenter中獲取
                Dim ds As New DataSet
                ds.ReadXml(Server.MapPath("TestData.xml"))
                Dim dv As New DataView(ds.Tables(0))
                '拿到之后, 緩存到Application,方便別的Http Get請求復用
                Application.Add("DataBase", dv)
            End If
            Dim dv1 As DataView
            dv1 = Application.Item("DataBase")
            '緩存到Session, 方便当前Http Post請求
            Session.Add("DataBase", dv1)
        End If
优点易于实现全局范围
缺点持久性 保存数据的服务器进程强行关闭那么数据就会丢失所以利用Application一定要有保底策略有的使用没有的自己耗用服务器端的内存
注意因为Application中的数据多个进程公用所以需要更新其中的值时需要利用 如下的语句做到独占更新
                Application.Lock()
                Application.Item("DataBase ") = NewDataBase
                Application.UnLock()
2     Session:
利用场合单独一个进程内部使用独会的短期的、敏感的数据。
优点易于实现持久性可以应对IIS重启辅助进程重启 可在进程使用
缺点耗用服务器端的内存
3     Database:
优点安全性。 容量。 持久性。 可靠性和数据完整性。 访问性。 广泛支持。
缺点复杂性能
方法    使用       
用程序状    更改不繁的全局信息,些信息由多个用使用,此安全性不成为问题不要在用程序状中存大量的信息。   
        特定于独会的短期信息,并且需要高的安全性。不要在会中存 大量的信息。在支持多用用程序中,可能会占用大量服源并影响可放性。     
数据支持      大量信息,管理交易,或者信息必可以受得住用程序和会重新启数据挖掘十分重要,并且需要高的安全性。      

posted on 2006-10-04 00:01  hdbb30  阅读(426)  评论(0编辑  收藏  举报

导航