当前位置: 首页 > 编程日记 > 正文

转: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:

  优点:安全性。 容量。 持久性。 可靠性和数据完整性。 可访问性。 广泛支持。

  缺点:复杂,性能

  方法 使用场合

  应用程序状态 存 储更改不频繁的全局信息,这些信息由多个用户使用,此时安全性不成为问题。不要在应用程序状态中存储大量的信息。

  会话状态 存储特定于单独会话的短期信息,并且需要较高的安全性。不要在会话状态中存储 大量的信息。在支持许多用户的应用程序中,这可能会占用大量服务器资源并影响可缩放性。

数据库支持 存储大量信息,管理交易,或者信息必须可以经受得住应用程序和会话重新启动。数据挖掘十分重要,并且需要较高的安全性。

转载于:https://www.cnblogs.com/Rhy/archive/2007/08/08/848314.html

相关文章:

时至今日,NLP怎么还这么难!

作者 | 刘知远在微博和知乎上关注自然语言处理(NLP)技术的朋友,应该都对#NLP太难了#、#自然语言理解太难了#两个话题标签不陌生,其下汇集了各种不仅难煞计算机、甚至让人也发懵的费解句子或歧义引起的笑话。然而,这些例…

Quartz定时任务学习(四)调度器

org.quartz.Scheduler 类层次 作为一个 Quartz 用户,你要与实现了 org.quartz.Scheduler 接口的类交互。在你调用它的任何 API 之前,你需要知道如何创建一个 Scheduler 的实例。取而代之的是用了某个工厂方法来确保了构造出 Sheduler 实例并正确的得到初…

反汇编算法介绍和应用——线性扫描算法分析

做过逆向的朋友应该会很熟悉IDA和Windbg这类的软件。IDA的强项在于静态反汇编,Windbg的强项在于动态调试。往往将这两款软件结合使用会达到事半功倍的效果。可能经常玩这个的朋友会发现IDA反汇编的代码准确度要高于Windbg,深究其原因,是因为I…

项目计划书的内容

1.引言 1.1计划的目的 1.2项目的范围和目标 1.2.1范围描述 1.2.2主要功能 1.2.3性能 1.2.4管理和技术约束 2.项目估算 2.1使用的历史数据 2.2使用的评估技术 2.3工作量、成本、时间估算 3.风险管理战略 3.1风险识别 3.2有关风险的讨论 3.3风险管理计划 3.3.1风险计划 3.3.2风险…

不用写代码就能学用Pandas,适合新老程序员的神器Bamboolib

作者 | Rahul Agarwal译者 | 陆离编辑 | Jane出品 | AI科技大本营(ID:rgznai100)曾经,你有没有因为学习与使用 Pandas 进行数据检索等操作而感到厌烦过?实现同样的功能,Pandas 给用户提供了很多种方法&…

后海日记(8)

来深圳已经这么长时间了,深圳给我的感觉总体很好,天那么蓝,空气也很清新,总的来说很不错。 努力学习,早日成才。 加油!版权声明:本文为博主原创文章,未经博主允许不得转载。 转载于:…

反汇编算法介绍和应用——递归下降算法分析

上一篇博文我介绍了Windbg使用的线性扫描(linear sweep)反汇编算法。本文我将介绍IDA使用的递归下降(recursive descent)反汇编算法。(转载请指明来源于breaksoftware的csdn博客) 递归(recursiv…

如何快速get到AI工程师面试重点,这12道题必备!

作者 | JP Tech译者 | 刘畅编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导读】2020 年的三月春招要来了,现在想要 Get 一个算法工程师的实习或全职机会,已经不是一件易事了。如果现在着手复习,茫茫题海…

金邦黑金刚4G内存 VS Vista系统

我的机器配置是 Intel Core 2 4320CPU 金邦黑金刚2G DDR2 800*2 P965P-DS3主板 N 8600GTS 为什么在Vista中 只识别了3.5G 我升级了主版BIOS 主版最高支持8G,哎结果网上一看,才明白。。。现在的系统不是很好的支持4G的内存。…

程序员的量化交易之路(25)--Cointrader之MarketData市场数据实体(12)

转载需注明出处:http://blog.csdn.net/minimicall,http://cloudtrade.top/ 前面一节我们说到了远端事件。其中,市场数据就属于远端事件。市场数据有什么?我们通过代码来回答这个问题: package org.cryptocoinpartners.…

滴滴开源在2019:十大重点项目盘点,DoKit客户端研发助手首破1万Star

整理 | Jane出品 | AI科技大本营(ID;rgznai100)2018 年,科技企业纷纷布局开源战略后迎来的第一个“丰收年”。但对滴滴来说,2019 年才迎来其第一波开源小高潮。自2017年滴滴零星开源数个项目后,滴滴开源项目…

PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头2

之前的博文中介绍了IMAGE_FILE_HEADER结构,现在来讨论比较复杂的“可选文件头”结构体。(转载请指明来自breaksoftware的csdn博客)先看下其声明 typedef struct _IMAGE_OPTIONAL_HEADER {//// Standard fields.//WORD Magic;...DWORD BaseOfData; // not e…

9月第1周安全回顾 IM安全威胁严重 企业增加无线安全投入

本文同时发表在:[url]http://netsecurity.51cto.com/art/200709/55180.htm[/url]本周(0827至0902)安全方面值得关注的新闻集中在安全产品、即时通信安全、无线安全和安全市场。安全产品:Intel vPro技术逐渐升温,关注指…

centos下LAMP之源码编译安装httpd

1 最好先安装组件[rootlocalhost ~]# yum groupinstall additional development [rootlocalhost ~]# yum groupinstall development tool2 安装ap1.5.2r(Apache Portable Runtime),安装apr-util 1.5.4工具[rootlocalhost ~]wget http://mirrors.cnnic.cn/apache//apr/apr-1.5.2…

PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头3

《PE2》中介绍了一些可选文件头中重要的属性,为了全面起见,本文将会讲解那些不是那么重要的属性。虽然不重要,但是还是可以发现很多好玩的情况。首先看一下32位的可选文件头详细定义。(转载请指明来源于breaksoftware的CSDN博客&a…

高效决策的三个关键

“领导者的责任,归纳起来,主要是出主意、用干部两件事。”***的这句话高度概括了领导者的关键任务,而这两件事都有一个共同的核心——决策。决策是管理者的天职,与其说这是他们的权力,不如说是一种责任。每一个经理人&…

开发者都想收藏的深度学习脑图,我们抢先曝光了!

可以看到,通过机器学习技术,软件或服务的功能和体验得到了质的提升。比如,我们甚至可以通过启发式引擎智能地预测并调节云计算分布式系统的节点压力,以此改善服务的弹性和稳定性,这是多么美妙。而对移动平台来说&#…

Cookie 位置_无需整理

为什么80%的码农都做不了架构师?>>> Cookie 位置 C:\Users\admin\AppData\Roaming\Microsoft\Windows\Cookies 转载于:https://my.oschina.net/Majw/blog/464018

PE文件和COFF文件格式分析——节信息

在《PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头3》中,我们看到一些区块的信息都有偏移指向。而我们本文讨论的节信息是没有任何偏移指向的,所以它是紧跟在可选文件头后面的。(转载请注明来源于breaksoftware的csdn博客&#…

强悍!使用Flash和Silverlight制作控件

Silverlight已经发布了正式版本,我也到网站下载了一个并看看,突然发现了他的例子中包含了这个公司。NETiKA TECH。之所以说他强,是因为他尽然使用Flash和Silverlight制作了仿造WinForm的控件,包括:常见的控件&#xff…

《评人工智能如何走向新阶段》后记(再续8)

由AI科技大本营下载自视觉中国2019.12.13 81.近来一波人工智能热潮是在大数据的海量样本及超强计算能力两者支撑下形成的。所以说这一波人工智能是由大数据喂养出来的。这时的机器智能在感知智能和计算智能等一些具体问题上已经达到甚至超越人类水平,目前在语音识别…

Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详介AvatarNode

2019独角兽企业重金招聘Python工程师标准>>> 正如大家所知,NameNode在Hadoop系统中存在单点故障问题,这个对于标榜高可用性的Hadoop来说一直是个软肋。本文讨论一下为了解决这个问题而存在的几个solution。 1. Secondary NameNode 原理&#…

PE文件和COFF文件格式分析——RVA和RA相互计算

之前几节一直是理论性质的东西非常多。本文将会讲到利用之前的知识得出一个一个非常有用的一个应用。(转载请指明来源于breaksoftware的csdn博客) 首先我们说下磁盘上A.exe文件和正在内存中运行的A.xe之间的关系。当我们双击A.exe后,A.exe会运…

《评人工智能如何走向新阶段》后记(再续9)

由AI科技大本营下载自视觉中国2019.12.16 96. 近日《Nature》杂志推荐2019年度10大科学进展的杰出论文,其中一篇是有关人工智能的,谈采用深度学习/强化学习算法来训练四足机器狗ANYmal,使它能快速爬起来。该文谈到,在反复训练下&…

RTX组织架构刷新出现了问题

今天发现RTX的组织架构刷新出现了问题。按照网络上的方法什么的把什么配置文件的IP地址改啊改啊。还是没有用。也TELNET了8010端口,也没有用。其实这样的方法之前把服务程序装在另一台机器上倒是可以的。有点麻烦的了。呵呵不知道各位博友有没有解决的好方法啊。呵呵…

一个最简单的通过WireShark破解SSL加密网络数据包的方法

原文地址: http://article.yeeyan.org/view/530101/444688 一般来说,我们用WireShark来抓取包进行分析是没有多大问题的。但这里有个问题是,如果你碰到的是用SSL/TLS等加密手段加密过的网络数据的时候,往往我们只能束手无策。在过…

PE文件和COFF文件格式分析——导出表

在之前的《PE可选文件头》相关博文中我们介绍了可选文件头中很多重要的属性,而其中一个非常重要的属性是(转载请指明来源于breaksoftware的CSDN博客) IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 该数组保存了…

将Quartz.NET集成到 Castle中

Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架、AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务.具体可参看TerryLee的Castle 开发系列文章。 …

《评人工智能如何走向新阶段》后记(再续10)

本文由AI科技大本营下载自视觉中国106.百度自研的飞桨(Paddle paddle)框架是中国自研的首个开源产业极人工智能深度学习框架,目前飞桨已累计服务150多万开发者,在定制化训练平台上企业用户超过6.5万,发布了16.9万模型&…

水管工游戏 (深搜)

水管工游戏 本题依然是采用搜索&#xff0c;深搜&#xff0c;广搜都可以&#xff0c;本代码采用深搜&#xff0c;此题在搜索时需要增加一些判断条件以及下一步要搜索的位置即可。 代码如下&#xff1a; #include<stdio.h> int a[51][51]; int book[51][51],n,m,flag0,top…