ASP.NET状态保存的常用方法

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

如上备注
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值