aspnet20程序设计论文(编辑修改稿)内容摘要:

在 网页与控件的状态数据,因此在输出 控件时, 会将部份状态数据储存到网页的 Hidden Field 中,这类型的状态数据称为 ViewState( ID 为 __VIEWSTATE),在服务器端即会被解译出状态与事件数据。 在大多数的内置 Web 控件中都有使用到这个机制,因此在使用大量 Web 控件的网页中,会有许多的 ViewState 会存放在网页中并随着 HTTP 数据流输出到用户端, ViewState 在输出时,会被加密为一组字符串,其金钥值 定义在计算机中,并且每一个对象都会被序列化 (serialize) 成字符串(因此若是自定义对象要放到 ViewState 时,则应要让它支持序列化),再输出到 __VIEWSTATE 字段中,在每次的网页来回时都会被传输,较大的 ViewState 会让网页大小膨胀,不利于快速的,不过 本身有提供将 ViewState 关闭的功能,因此如果控件不需要状态保存时,可将它关闭以减少输出的大小。 为确保控件的事件能够确实被引发,让事件驱动能够被运行,因此控件事件引发命令时需要的参数,是交由 JavaScript 脚本在用户端引发时,填 入 另 一 个 Hidden Field ( ID 为 __EVENTTARGET 以及 __EVENTARGUMENT),并且引发窗体的送出指示 (submit),传送到服务端后,服务端的 HttpApplication 中的工具函数会解析 __EVENTTARGET 和 __EVENTARGUMENT 字 段 中 的 信 息 , 并 且 交 由 控 件 所 实 现 的 RaisePostBackEvent() 来引发事件,并由 .NET Framework 内部的事件处理器制接手处理(调用控件设置的 事件处理程序)。 在 运行的时候 , 经 常 会有 网 页 的来 回 动作 (roundtrip),在 中 称为 PostBack,在传统的 ASP 技术上,判断网页的来回是需要由开发人员自行撰写,到了 时,开发人员可以用 机能来判断是否为第一次运行 (当 发现 HTTP POST 要求的数据是空值时 ),它可以保证 的控件事件只会运行一次,但是它有个缺点(基于 HTTP POST 本身的缺陷),就是若用户使用浏览器的 刷新功能 (按 F5 或刷新的按钮 ) 刷新网页时,最后一次运行的事件会再被运行一次,若要避免这个状况,必须要强迫浏览器清空高速缓存才可以。 中有新增三个来回模式: Cross Page Postback:允许跨不同的网页运行 PostBack,服务端可使用 来判断是否是跨网页型的来回。 Async Page Mode:允许网页使用异步的方式运行,服务端可用 来判断。 Callback: 新 增的由网页回呼用户端指令的功能,服务端可用 来判断是否要求是来自 Callback。 来回模式不仅是 运作时的内核 ,它也是 应用程序的一个主要缺点,尤其是在设计复杂度高的页面时,在网页中隐藏的 ViewState 的大小会相当大,而在每次的来回动作中,都会传送 ViewState 在内的窗体信息,大量的 ViewState 会使得传送的时间拉长,而且每次来回动作都会让整个网页被刷新,而出现闪烁的情况(就算在本地端也一样),但在 AJAX 技术尚未成熟时,只能够忍受这种因底层限制所带来的问题,在 AJAX 技术发展出来后,通过UpdatePanel 成功的缓解了这个问题(但 ViewState 传送的问题仍然未根本的解决,必须要使用像 Page Method 这样的方式才能彻底的解决)。 熟悉 ASP 技术的人都知道,代码都是混在 HTML 标签之间,以输出预期需要的 HTML 指令,这个技术在 中,由各控件的绘制 (Render) 机制包装起来了,绘制机制装载了 HtmlTextWriter 对象,由它来产生 HTML 指令,它会输出至 HttpContext 的 Response 输出数 状态管理 (state management) 在 Web 应用程序中,一向是很重要的课题 ,良好的状态管理可以帮助开发人员发展出具有状态持续能力的应用程序(像是工作流程型应用程序或是电子商务应用程序),但状态管理功能会视应用程序的部署状态以及信息的共用程度来选择,在 中,分为服务器端状态管理以及用户端状态管理,用户端状态管理为 ViewState 以及 Cookies,服务端状态管理则是 Session 与Application 对象。 它们的差异点在于: ViewState 是加密的数据流,和 HTML 一起输出到用户端。 Cookies 是加密(也可不加密)的小型数据,和 HTML 不同,它可以高速缓存在用户端浏览器中。 Session 是服务器端的状态保存机制,每个用户端均有独立的空间(以浏览器运行个体来赋与唯一的 SessionID 值)。 Application 是服务器端的状态保存机制,但应用程序所有的用户端共用同一份状态数据。 据流中 (即 ASP 技术的 ())。 Application 对象会在应用程序的 Application_OnStart 事件中初始化,并使用名称来识别数据(它是一个 NameObjectCollectionBase 集合的实现品 ),它会储存在应用程序的范围内,所有的连接(用户)都可以使用,属于共用型的储存体,适合储存所有用户都可使用的数据,在多人使用的情况下,可以适当的使用 Lock/Unlock 的机制来确保应用程序状态的更新。 ()。 Application[PageRequestCount] = ((int)Application[PageRe。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。