您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 分享(C#高级编程第6版doc):第39章 ASP.NET AJAX
第39章ASP.NETAJAXWeb应用程序编程是一个不断变化和改进的主题。前面两章介绍了如何使用ASP.NET创建功能全面的Web应用程序,读者可能以为,前面已经探讨了创建自己的Web应用程序所需要的所有工具。但是,如果花点时间查看当前的网站,就会注意到,最近的网站在使用方面比老网站好得多。许多目前最好的网站都提供了丰富的用户界面,其响应能力与Windows应用程序差不多。它们是使用客户端处理技术实现的,主要是JavaScript代码和一种新技术Ajax。出现这个变化,是因为客户用于浏览网站的浏览器和客户用于运行浏览器的计算机更强大了。Web浏览器的当前版本,例如InternetExplorer7和Firefox,也支持各种标准。这些标准,包括JavaScript,使Web应用程序提供的功能比使用普通的HTML提供的功能强大得多。前面的章节介绍了一些这方面的功能,例如使用层叠样式表(CSS)设置Web应用程序的样式。本章介绍的Ajax并不是一个新技术,它只是一个标准的合并,以识别当前Web浏览器的丰富的潜在功能。在支持Ajax的Web应用程序中,最重要的特性是Web浏览器能在操作的外部与Web服务器通信。这称为异步回送或部分页面的回送。实际上,这意味着用户可以与服务器端的功能和数据交互,而无需更新整个页面。例如,单击一个链接,移动到表的第二页数据上时,Ajax可以只刷新表的内容,而不刷新整个Web页面。也就是说,需要的Internet通信量较少,从而使Web应用程序的响应比较快。本章的后面将介绍这个例子,还会举许多例子来说明Ajax在Web应用程序中的巨大作用。本章将在代码中使用Ajax的Microsoft实现方式,它称为ASP.NETAJAX。这个实现方式采用了Ajax模型,将它应用于ASP.NET架构。ASP.NETAJAX提供了许多服务器控件和客户端技术,它们专用于ASP.NET开发人员,可以毫不费力地在Web应用程序中添加Ajax功能。本章的内容如下:●首先学习Ajax和实现Ajax的技术。●学习ASP.NETAJAX及其组成部分,以及ASP.NETAJAX提供的功能。●介绍如何通过服务器端和客户端代码在Web应用程序中使用ASP.NETAJAX。这是本章最大的一部分。39.1Ajax的概念Ajax允许通过异步回送和动态的客户端Web页面处理,改进Web应用程序的用户界面。术语Ajax由JesseJamesGarrett提出,是AsynchronousJavaScriptandXML的缩写。提示:Ajax不是一个缩写词,因此不能写作AJAX。但是,在产品名称ASP.NETAJAX中它是大写,这是Ajax的Microsoft实现方式,如下一节所述。根据定义,Ajax显然涉及到JavaScript和XML。但是,Ajax编程需要使用其他技术,如表39-1所述。表39-1技术说明HTML/XHTMLHTML(超文本标记语言,HypertextMarkupLanguage)是显示和布局语言,由Web浏览器用于在图形化用户界面上显示信息。在前面两章中,学习了HTML如何实现这个功能,ASP.NET如何生成HTML代码。可扩展的HTML(XHTML)是使用XML结构的一个较严谨的HTML版本CSSCSS(层叠样式表)是HTML元素根据一个样式表中定义的规则设置样式的方式。它允许将样式同时应用于多个HTML元素,能在不修改HTML的情况下改变Web页面的外观。CSS包含布局和样式信息,所以也可以使用CSS在页面上定位HTML元素。前面的章节还在例子中介绍了具体的操作DOMDOM(文档对象模型)是在层次结构中表示和处理(X)HTML代码的一种方式。它允许访问页面上的“表x中第三行的第二列”,且无需使用比较基本的文本处理方式定位这个元素JavaScriptJavaScript是一个客户端脚本编辑技术,允许在Web浏览器上执行代码。JavaScript的语法类似于其他基于C的语言,包括C#,提供了变量、函数、分支代码、循环语句、事件处理程序和其他编程元素。但是与C#不同,JavaScript不是强类型化的,JavaScript代码的调试比较困难。对于Ajax编程,JavaScript是一种关键技术,因为它允许利用DOM处理功能,动态修改Web页面XMLXML是标记数据的一种独立于平台的方式,对Ajax非常关键,它既是处理数据的方式,也是客户机和服务器之间的通信语言XmlHttpRequest自InternetExplorer5以来,浏览器就把XmlHttpRequestAPI作为一种在客户机和服务器之间进行异步通信的方式。Microsoft最初把它引入为一种技术,以访问通过Internet存储在Exchange服务器中的电子邮件,它使用的产品叫做OutlookWebAccess。后来它变成在Web应用程序中进行异步通信的标准方式,是支持Ajax的Web应用程序的一个核心技术。这个API的Microsoft实现方式称为XMLHTTP,它利用所谓的XMLHTTP协议来通信Ajax还需要用服务器端代码处理部分页面的回送和完整页面的回送,这包括服务器控件的事件处理程序和Web服务(Web服务详见第37章)。图39-1显示了这些技术如何在AjaxWeb浏览器模型中联合使用,并与传统的Web浏览器模型进行比较。在AJAX推出之前,表39-1中的前四个技术(HTML、CSS、DOM和JavaScript)用于创建所谓的动态HTML(DHTML)Web应用程序。这些应用程序比较著名有两个原因:它们提供的用户界面要好得多;它们一般只能用于一种类型的Web浏览器。自DHTML推出以来,标准已有了改进,Web浏览器的相关标准级别也提高了。但是,它们仍有区别,Ajax解决方案必须考虑这些区别。也就是说,大多数开发人员实现Ajax解决方案还相当慢。只有开发出更抽象的Ajax架构(例如ASP.NETAJAX),创建支持Ajax的网站才是企业级开发的一个可行选项。图39-139.2ASP.NETAJAXASP.NETAJAX是Ajax架构的Microsoft实现方式,专用于ASP.NET开发人员。在ASP.NET的最新版本中,ASP.NETAJAX是ASP.NET核心功能的一部分。网站版本,包含相关的文档说明、论坛和示例代码,可以用于我们使用的ASP.NET版本。ASP.NETAJAX提供了如下功能:●服务器端架构允许ASP.NETWeb页面响应部分页面的回送操作。●ASP.NET服务器控件便于实现Ajax功能。●HTTP处理程序允许ASP.NETWeb服务在部分页面的回送操作中,使用JavaScriptObjectNotation(JSON)串行化功能与客户端代码通信。●Web服务支持客户端代码访问ASP.NET应用程序服务,包括身份验证和个性化服务。●网站模板可用于创建支持ASP.NETAJAX的Web应用程序。●客户端的JavaScript库对JavaScript语法进行了许多改进,还提供了许多代码,来简化Ajax功能的实现。这些服务器控件和服务器端的架构统称为ASP.NETExtensions。ASP.NETAJAX的客户端部分称为AJAX库。还可以从网站上下载另外两个软件包:●ASP.NETAJAXControlToolkit:这个下载软件包包含了由开发团体创建的其他服务器控件。这些控件是共享的,可以查看和修改它们。●MicrosoftAJAXLibrary3.5:这个下载软件包包含JavaScript客户端架构,它们由ASP.NETAJAX用于执行Ajax功能。如果开发的是ASP.NETAJAX应用程序,就不需要这个软件包。这个下载软件包适用于其他语言,例如PHP,使用与ASP.NETAJAX相同的代码基执行Ajax功能。它超出了本章的范围。提示:还有一个下载软件包称为Futures,过去用于给ASP.NETAJAX应用程序添加额外的、预先发布的功能或原始功能。但在编写本书时,不清楚这个下载软件包是否在VS2008中得到支持,所以本章不介绍它。这两个下载软件包提供了功能丰富的架构,可以用于在自己的ASP.NETWeb应用程序中添加Ajax功能。下面几节将介绍ASP.NETAJAX的各个组成部分。39.2.1核心功能ASP.NETAJAX的核心功能分为两个部分:AJAX扩展和AJAX库。1.AJAX扩展在安装ASP.NETAJAX时,会在GAC中安装两个程序集:●System.Web.Extensions.dll:这个程序集包含ASP.NETAJAX功能,包括AJAX扩展和AJAX库JavaScript文件,它们可以通过ScriptManager组件(稍后介绍)来获得。●System.Web.Extensions.Design.dll:这个程序集包含用于AJAX扩展服务器控件的ASP.NETDesigner组件,这些服务器控件由ASP.NETDesigner在VisualStudio或VisualWeb开发程序中使用。ASP.NETAJAX中的许多AJAX扩展组件都涉及支持部分页面的回送和用于Web服务的JSON串行化。这包括各种HTTP处理程序组件和对已有ASP.NET架构的扩展。这些功能都可以通过网站的Web.config文件来配置。还有用于其他配置的类和属性。但大多数配置都是透明的,用户很少需要改变支持ASP.NETAJAX的网站模板提供的默认设置。与AJAX扩展的主要交互操作是使用服务器控件将Ajax功能添加到Web应用程序中。有几个服务器控件可以用各种方式增强Web应用程序。表39-2列出了一些服务器端组件。本章的后面将介绍它们。表39-2控件说明ScriptManager这个控件是ASP.NETAJAX功能的核心,使用部分页面回送功能的每个页面都需要它。它的主要作用是管理对AJAX库JavaScript文件的客户端引用,AJAX库JavaScript文件位于ASP.NETAJAX程序集中。AJAX库主要由AJAX扩展服务器控件使用,这些控件会生成自己的客户端代码。这个控件还负责配置要在客户端代码中访问的Web服务。给ScriptManager控件提供Web服务的信息,就可以生成客户端类和服务器端类,来透明地管理与Web服务的异步通信。还可以使用ScriptManager控件维护对自己的JavaScript文件的引用,和FuturesCTP中包含的其他JavaScript文件的引用UpdatePanelUpdatePanel控件非常有用,也许是最常用的ASP.NET控件。这个控件与标准的ASP.NET占位符类似,可以包含其他控件。更重要的是,在部分页面的回送过程中,它还把页面的一个部分标记为可以独立于其他页面部分来更新的区域。UpdatePanel控件包含的、产生回送操作的任意控件(如按钮控件),都不会产生整个页面的回送操作,它们只执行部分页面的回送,只更新UpdatePanel的内容。在许多情况下,只需要这个控件实现AJAX功能。例如,可以把一个GridView控件放在UpdatePanel控件中,该控件的分页、排序和其他回送功能都在部分页面的回送过程中发挥作用UpdateProgress在部分页面的回送过程中,这个控件可以为用户提供反馈。在更新UpdatePanel时,可以为要显示的UpdateProgress控件提供一个模板。例如,可以使用浮点数的div控件显示消息“Updating…”,告诉用户应用程序正在忙。注意部分页面的回送不会干扰Web页面的其他区域,其他区域仍可以响应TimerASP.NETAJAX的Timer控件是使UpdatePanel定期更新的一种有效方式。可以把这个控件配置为定期触发回送操作。如果这个控件包含在UpdatePanel控件中,则每次触发Timer控件时,都会更新该UpdatePane
本文标题:分享(C#高级编程第6版doc):第39章 ASP.NET AJAX
链接地址:https://www.777doc.com/doc-5472810 .html