ASP.NET的视图阅读机制供给了客户真个管理方法.它可以保管恳求过程当中的一切数据. 这关于无形态显示的协议编程如HTTP供给了便利.
ASP.NET的 View State被保管在页面上暗藏的Base64字符串中, 它记载了客户端到Server的恳求和服务端到客户真个回应信息.
<input id="__VIEWSTATE" type="hidden" name="__VIEWSTATE" value="/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQCAQ9kFgICBQ9kFgJmD2QWAgIBDxYCHhNQ cm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3Jvc29mdC5TaGFyZVBvaW50LldlYkNvbnRyb2xzLlNQQ29u dHJbE1vZGUsIE1pY3Jvc29mdC5TaGFyZVBvaW50LCBWZXJzaW9uPTEyLjAuMC4wLCBDdWx0dXJlPW5l dXRyWwsIFB1YmxpY0tleVRva2VuPTcxZTliY2UxMTFlOTQyOWMBZAIDD2QWDgIBD2QWBgUmZ19lMzI3 YTQwMF83ZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD2RkZAUmZ18yNDQ3NmI4YV8xY2FlXzRmYTV fOTkxNl8xYjIyZGYwNmMzZTQPZBYCZg8PZBYCHgVjbGFzcwUbbXMtc2J0YWJsZWFsdCBtcy1zYnRhYm xFlOTQyOWMBZAIDD2YjIyZGYjIyZGYjIyZGlYkNvbnRyb2xzLlNQQ29YkNvbnRyb2xzLlNQQ2UxMTFl OTQyOWMBZAIDD2QWDgIBD2QWBgUmZ19lMzI3YTQwMF83ZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD...==" />
图 1: ASP.NET View State示例
ASP.NET View State有一些问题你得了然. 一旦这些问题处理了,就可以更好的运用这一特征.详细以下
起首说的是,viewstate的数据量很大,特别是页面包括大量的把持件或是富文本内容.这在客户端和Server来往通讯中就会发生非常多数据.
就是由于这一缘由,它会形成你的ASP.NET使用功能降落.在运用过程当中就可以领会到这一点
另外一个问题就是带宽占用. 这就关系到钱的问题了,假如viewstate的带宽上限是10m/s,劈面令数百万的恳求处置时就会显得力所能及了.
ASP.NET View State在发送秘密数据到客户端时会有泄密风险. 数占有可能被截获. 固然可以再次加密后发送,但仍是会影响到功能.
处理 ASP.NET View State上述问题的一个办法就是给每个数据加入独一标示(或是ID).以后经过这个标示来查找响应的答复.
这么做的道理就是,viewstate只会把数据保管到服务端而不会放在阅读器. 所以关于阅读器来讲不论是标示仍是ID都无所谓. 下面就是个例子.
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="vs:cf8c8d3927ad4c1a84da7f891bb89185" />
图2: 字符串中的token
但假如在集群的情况上运用viewstate,下一次的恳求可能会发送到另外一台Server上. 因而,需求把数据保管到一切Server都能拜访到的公共存储机上.
保管数据的最好地方就是分布式的缓存区. 如许,不单能完成公用的Server存储,更能表现出比拟SQLserverServer更优的功能和伸缩性.
图 3: 分布式缓存 ASP.NET View State
NCache 是.NET平台一个分布式缓存. 它也能协助处理上面提到的viewstate的问题.
NCache 无需更改ASP.NET使用的代码就可以完成分布式缓存. 可以依照下面的步调来完成.
Step 1: 在App_browsers 创立app.browser文件. 在app.browser添加page adapters :
File: App_browsersapp.browser <browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.Page" adapterType="Alachisoft.NCache.Adapters.PageAdapter" /> </controlAdapters> </browser>
Step 2: 在web.config 文件中添加相干援用:
File: web.config <compilation defaultLanguage="c#" debug="true" targetFramework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.Adapters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=CFF5926ED6A53769"/> </assemblies> </compilation>
Step 3: 在 web.config 注册NCache.
File: web.config <configSections> <sectionGroup name="ncContentOptimization"> <section name="settings" type="Alachisoft.NCache.ContentOptimization.Configurations.ContentSettings" allowLocation="true" allowDefinition="Everywhere"/> </sectionGroup> </configSections>
Step 4: 在 web.config 文件中修正相干设置装备摆设(上面注册过的部分). 它们把持 NCache ASP.NET View State 缓存功用.
File: web.config <ncContentOptimization> <settings viewstateThreshold="12" enableViewstateCaching="true" enableTrace="false" groupedViewStateWithSessions="false"> <cacheSettings cacheName="myCache" maxViewStatesPerSession="3"> <expirationtype="Absolute" duration="1" /> </cacheSettings> </settings> </ncContentOptimization>
Step 5:最初在web.config 注册 HTTP handler:
File: web.config <httphandlers> <add verb="GET,HEAD" path="NCResource.axd" validate="false" type="Alachisoft.NCache.Adapters.ContentOptimization.ResourceHandler, Alachisoft.NCache.Adapters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cff5926ed6a53769"/> </httphandlers>
在服务端运用NCache缓存 ASP.NET View State 的益处以下 .
进步ASP.NET 功能 如今只需求发送一个小小的token而无需viewstate的原生数据. 这能减少量据量晋升功能.
下降带宽破费: 数据量小了也节俭了非常多带宽流量.能省很多钱
平安性: 如今ASp.NET的viewstate字符串无需发送到阅读器端了,也就没有平安隐得了.
ASP.NET View State 存储更疾速更具有延展性: NCache 是很疾速具有延展性的分布式缓存.这就处理了ASP.NET的瓶颈问题.
ASP.NET View State牢靠性进步: NCache 会智能复制相干的数据.意味着即便缓存Server当掉,也不会丧失先关数据
NCache供给了非常多管理ASP.NETviewstate初级特征.列表以下
最小单位: NCache可以标注 ASP.NET View State的最小数据单位. 小于这一熟知的数据不会保管. 如许就只会保管主要的数据.
ASP.NET View State衔接会话形态: 你可以衔接viewstate到以后的会话上.如许会话完毕后,缓存数据就会消逝
页面数据上限单位: 你可以把持幸亏一个进步前辈先出情况中页面将要保管的数据最大单位数. 如许只会保管到最新的数据单位. 这就更好的管理了内存的运用状况,只供给给最需求的数据保管.
会话数据上限单位: 和页面相似,也能够指定会话的数据单位上限. 这就保管的是比来的数据单位.
页面和会话级别设置: 可以辨别设置每一个页面或会话属性.亦或是全体运用类似的设置装备摆设
正如你所见,缓存ASP.NETviewstate属性供给了非常多很棒的特征,也晋升了使用的功能. 它也协助你节俭了很多带宽用度. 最主要的是,处理了数据发送至阅读器的平安问题.
假如你在运用 ASP.NET View State 最好将其缓存至服务端. 为此你也最美观看Ncache.更具体的引见在这http://www.alachisoft.com
Iqbal Khan 是 Alachisoft (http://www.alachisoft.com)的技术专家. Alachisoft 为.NET平台供给分布式缓存NCache. Iqbal1990年从印第安纳大学取得盘算机科学硕士学位,可以经过邮箱联络他 iqbal@alachisoft.com.
本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务