在领悟ASP.NET技术之后,开始使用最新的框架开发支持AJAX的ASP.NET应用程序。本书涉及2007年2月发布的ASP.NET AJAX Extensions 1.0。它通过实际操作和丰富的代码实例,帮助你使用最新的Web开发工具创建新型的应用程序。
阅读本书,你将能够:
●理解AJAX工作方式的基础,以创建交互的、响应的应用程序。
●使用Microsoft AJAX库来支持面向对象的JavaScript程序。
●使用ASP.NET AJAX Control Toolkit中丰富的、高级的控件。
●不进行客户端程序设计也能显示部分页面。
●使用ASP.NET内建的验证和来自JavaScript的profile服务。
●创建可以从JavaScript调用的服务器端服务。
无
AJAX表示“Asynchronous JavaScript and XML”,它是2005年提出的一个术语,指用于创建丰富的、高度交互性和响应性的Web应用程序的众多技术,主要是应用程序利用客户端进行大量工作,并向服务器进行带外调用(outofband call)。带外调用是一种服务器请求,它将会导致页面的更新,而不是页面替换。这一技术的效果让AJAX Web应用程序在一定程度上更像是传统的桌面Microsoft Windows应用程序,具有桌面程序的许多高级功能,如拖放、异步任务、高度的程序响应和没有抖动的用户界面,并保证用户功能的可用性。
ASPNET AJAX Extensions是对ASPNET平台的一个重要扩展,可以用更加合理和有效的方式来实现AJAX风格的功能。因为已经将ASPNET AJAX Extensions设计为ASPNET的一部分,所以它可以同现有的平台和应用程序模型无缝集成。
从体系结构上来说,ASPNET AJAX框架由两个完全不同的元素组成:一个客户端数据库和一组服务器端扩展组件。客户端脚本库完全是用JavaScript编写的,因此,可以在现有的任何浏览器中运行。服务器扩展组件完全与以ASPNET服务器为基础的各种服务和控件相集成,这样,开发人员就可以用他们所熟悉的、与开发传统的基于ASPNET服务器页面类似的方式来创建丰富的Web页面。
大多数ASPNET AJAX开发人员以前都从事过ASPNET开发,所以他们对以控件为基础的服务器端开发模型会相当熟悉。以服务器为中心的编程模型是ASPNET编程模型发展史上迈出的重要一步。ASPNET AJAX服务器端控件的功能非常强大,尤其是开发人员对手工创建AJAX客户端脚本不太熟悉时更为有用。
本书通过大量实例来讲述ASPNET AJAX的大致框架,让读者可以熟悉种种相关的技术和工具。
对于ASPNET开发人员和专业的人士来说,AJAX真是一个重要的突破。它使得跨浏览器编程成为现实,让Web程序具有了类似桌面程序的功能。
谁应该阅读这本书
本书适合任何ASPNET开发人员和专业人士阅读。如前所述,ASPNET AJAX是ASPNET发展当中的一个重要的里程碑,它反应了业界的一种基本倾向——AJAX模型。此外,ASPNET AJAX超越了经典的AJAX模型,它的框架可以跨越客户端和服务器,为Web应用程序提供点对点的解决方案。就Microsoft Web平台来说,ASPNET AJAX Extensions包罗了各种各样的功能(Web专业人员的夙愿最终得以实现了)。
如果你是一名Web专业人员,正在使用基于Microsoft的Web技术进行开发,AJAX一定是你值得抓住的一个机遇。这本书就是你的起点!甚至会收获更多。
本书是如何组织的
本书共分为三个主要部分:对平台和它的构建模块的综述,用于有效地增强现有网站性能的技术,和以客户端为中心的开发。在第一部分中,将讲述有关AJAX模型的基本概念,以及为了支持这一模型而对JavaScript语言做出的扩展。第二部分主要介绍框架中用于扩展现有的服务器端控件的构建元素,以及如何将现有的传统ASPNET页面转换为功能完善的AJAX页面。最后在第三部分中介绍了众多可以展示AJAX应用程序强大功能的开发工具和技术(对服务器端代码的带外调用)。
系统要求
为了可以运行本书的代码例子,需要具有以下硬件和软件:
支持的操作系统:Microsoft Windows Vista、Microsoft WindowsXP (安装了ServicePack2)、Microsoft Windows Server2003(安装了Service Pack1)或Microsoft Windows 2000(安装了Service Pack 4)
Microsoft Visual Studio 2005 Standard Edition或Microsoft Visual Studio 2005 Professional Edition
Microsoft SQL Server 2005 Express(已经包含在Visual Studio 2005中)或Microsoft SQL Server 2005
具有Intel PentiumIII 600MHz(或同等性能的处理器)或更高处理器(建议使用1GHz或更高的处理器)的计算机
最低192MB的RAM(建议使用256MB或更高的RAM)
至少支持256色,800×600或更高的分辨率的显示器(推荐用1024×768,16位真彩色)
Microsoft鼠标或其他兼容的定位设备
配置SQL Server 2005 ExpressEdition
本书中一些章节的例子需要可以访问SQL Server 2005 Express Edition(或SQL Server2005)来创建和使用Northwind Traders数据库。下面以SQL Server 2005 Express Edition为例,介绍为用户账号进行授权的步骤,使用经过授权的账号才可以运行本书中的示例代码。
1使用具有管理员权限的用户账号来登录机子上的Windows系统。
2在Windows的“Start”(开始)菜单中,点击“All Programs”(所有程序),点击“Accessories”(附件),再点击“Command Prompt”(命令提示符)来打开命令提示符窗口。
3在命令提示符窗口中,输入以下区分大小写的命令。sqlcmd-S YourServer\SQLExpress -E将YourServer替换为你的电脑主机名。
在运行sqlcmd命令之前,可以先在命令提示符窗口中运行hostname命令来查询计算机的主机名。
4在1>命令提示符后,输入以下命令,包括方括号,再按回车键:sp_grantlogin [YourServer\UserName]将YourServer替换为相应的电脑主机名,将UserName替换为你想要使用的用户账号。
5在2>提示符后,输入以下命令,并按回车键来确认:go如果出现错误提示信息,请先确认是否正确输入了sp_grantlogin命令,包括方括号。
6在1>命令提示符后,输入以下命令,包括方括号,再按回车键:sp_addsrvrolemember [YourServer\UserName], dbcreator7在2>提示符后,输入以下命令,并按回车键来确认:go如果出现错误提示信息,请先确认是否正确输入了sp_addsrvrolemember命令,包括方括号。
8在1>提示符后,输入以下命令,并按回车键来确认:Exit9关闭命令行提示窗口。
10注销管理员账号。
Northwind Traders数据库不再随SQL Server 2005一同发布,需要单独下载。可以从以下网站下载Northwind数据库的安装脚本:http://wwwmicrosoftcom/downloads/detailsaspx FamilyId=&displaylang=en,在下载页面中有详细的安装说明。
代码示例
书中所有的代码示例可以从本书的网址http://wwwmicrosoftcom/mspress/companion/9780735624139/下载,要下载示例文件,请单击该网页中的“Companion Content”(附带内容)链接。下载的代码包括了大多数章节的工程文件、代码片断和引用的例子。
本书支持
我们在编辑时尽了最大的努力,以确保本书和附带内容准确无误。所搜集到的错误反馈和修订将会及时在Microsoft知识库(Microsoft Knowledge Base)的文章中公布。
微软公司在以下Web站点为其发行的图书和附带内容提供支持:http://wwwmicrosoftcom/learning/support/books/。
问题和评论
如果你对本书及其配套内容有什么评论、问题或想法,或有通过访问上述网站无法找到答案的问题,请发电子邮件给Microsoft Press,邮箱地址是:
mspinput@microsoftcom
或发普通邮件到:
Microsoft Press
Attn: Introducing Microsoft ASPNET AJAX Editor
One Microsoft Way
Redmond, WA 980526399
请注意,以上地址不提供Microsoft软件产品的技术支持。
致谢
AJAX是Web开发人员最应该关注的技术之一。本书对任何Web开发者都适用,不论Web开发人员的技术背景如何,本书都为他们学习AJAX提供了平稳而有效的开端,编著一种新技术的图书总会具有一定的难度,因为作者不仅要自学新知识,还要不断寻找如何向别人解释和传授这种技术的最好方式。
我也通过这本书来学习ASP.NET AJAX,所以我将是这本书的第一个受益人。在我写完这本书之后,可以说,我相信自己对这一技术了解得已经相当多了。因为我学习能力强,还是因为这本书是本好书?对此我也不好下结论。
非常感谢Scott Guthrie花时间与我交流,向我解释技术发展方向和在2005年的Professional Developers Conference 会议前后开发团队的学习情况,正是在那次会议上第一次公布了“Atlas”平台。Simon Calvert为这一平台提供了个人指导,Stefan Schackow 为一些疑难问题提供了富有洞察力的答案。我贪婪地阅读了Bertrand LeRoy和Nikhil Kothari的大量日志(这些日志讲述的主题包罗万象),非常不错,我发现它们非常有用。
在编写这本书的过程中,我也联系了一些在AJAX领域活动的经销商,感谢来自ComponentOne的Miljan Braticevic、Infragistics的Tony Lombardo还有Telerik公司的Svetozar Georgiev。ASPNET AJAX确实非常伟大,但这些朋友和他们的团队工作得也很出色,他们为应用程序创建的组件可以让Web程序像桌面程序一样运行。
Christian Gross刚写了一本关于REST开发的著作,有助于我理解REST的概念以及它在AJAX和ASPNET AJAX中所扮演的角色(在第8章有相关介绍)。
有关这本书的创作过程,说来话长,可以这么说,在编写本书时,我周游了3个大陆和9个国家:意大利、美国、法国、西班牙、奥地利、澳大利亚、德国、英国和马来西亚。我的朋友Greg Linwood和Brett Clarke向我挑战,看我能不能在一周之内完成一章的创作,同时还得做培训,到墨尔本观光,并为一个非常重要的纪念日准备一场特别的Microsoft PowerPoint介绍。我真把这些活一气呵成,相当有趣!
Fritz Lechnitz也向我挑战,看我能不能在参加维也纳一场大型网球锦标赛的同时,也完成一章的创作。在那场比赛中,在对方顶尖选手暴风雨般的反手和正手球的攻击下,我被打得落花流水、晕头转向。
Andrea Saltarello也向我挑战,在ASPNET AJAX官方正式版本发布一周之后,就请我上一堂传授ASPNET AJAX的课。我们把它外包了出去。
最后,SolidQ的朋友也等不及我完成这本书,就开始发起一些大型的培训了。
还有谁?哦,当然,还有可爱的Lynn Finnel和整个编辑团队,他们非常灵活、开放,允许我把交稿日期一推再推。Kenn Scribner发现了ASP.NET AJAX和我,并不止一次地将我引向正确的轨道。(当然,我也会回报她的好意,但这经常是出于友谊……)
Ben Ryan非常想看到这本书,现在这本书终于面市了。感谢Ben!
一如既往,感谢我的妻子Silvia,还有我的孩子Francesco和Michela,我每写完一本书他们都会长高许多。
Dino Esposito:Dino Esposito: 是意大利首都罗马的一位软件培训师兼顾问。他是Solid Quality Mentors团队的成员之一,专攻Microsoft.NET技术。他经常在欧洲、澳大利亚及美国从事技术和咨询工作。 多年来,Dino在为银行和保险公司搭建体系结构和创建分布式系统方面,积累了第一手的经验和技巧,这些经验技巧也同样适用于对安全、优化、性能、可伸缩性和交互性要求极高的应用场景。 全世界每个月至少有5家期刊和网站会发表Dino的文章,这些文章的主题包括从Web开发到数据存取,从软件最佳实践到Web服务等。
成保栋:暂无简介
随着网站技术和Web 20概念越来越深入人心,AJAX(Asynchronous JavaScript And XML)已广泛应用于各类网站和公司内部的应用程序平台。它的发展促使广大程序员,由传统的服务器端 Render 开发方式逐步转变为由浏览器和应用程序平台的开发方式,除此之外为改善系统性能,提高系统运行效率的AJAX功能也在各种商业级应用程序中广泛使用。
但是,AJAX需要针对浏览器客户端程序进行开发且采用标准的脚本语言格式,而这类语言具有非编译性和难调试性的特点,这就使得开发AJAX所需的成本和时间大量增加。
Microsoft及其开发社区在ASPNET 20平台之上发展了一套基于典型AJAX开发所需控件组,这套控件集成了很多AJAX相关功能,使得本需要大量客户端脚本的开发变得简单。本书就是主要介绍ASPNET AJAX的。
什么是AJAX
术语AJAX用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验。在AJAX之前,Web站点强制用户进入提交、等待、重新显示的模式,用户的动作总是与服务器的“思考时间”同步。AJAX提供与服务器异步通信的能力,使用户从请求、响应的循环中解脱出来。AJAX可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来更新相应的UI,而不是刷新整个UI页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。
虽然AJAX所需的基础架构已经出现了一段时间,但直到现在异步请求的真正威力才得以展现。拥有一个响应极其灵敏的Web站点确实激动人心,因为它允许开发人员和设计人员使用标准的HTML/CSS/JavaScript创建桌面风格的(desktoplike)可用性。Google Maps 就是这类网站的典型代表,它的成功告诉我们,Web应用程序不必依赖于从服务器重新载入页面来向用户呈现更新。一切似乎都发生在瞬间。简而言之,在涉及用户界面的响应灵敏度时,基准设得更高了。
什么是ASPNET AJAX
如果说AJAX为Web增光添彩,那么ASPNET AJAX就是微软为ASPNET披上的金履玉衣。那么什么是ASPNET AJAX呢?它涉及很多方面的内容。其中最为显著的优点就是它能够和ASPNET实现无缝集成。 ASPNET AJAX完全支持Internet Explorer、Firefox和Safari浏览器。
ASPNET AJAX 是一个以快速、方便地搭建新一代的强大、互动、个性化、支持大多数浏览器的 AJAX 网页为目标的免费框架。它集成了 Microsoft 浏览器客户端脚本资源和 ASPNET 20 服务器端方便的环境。
ASPNET AJAX 是 ASPNET的一个扩展,采用了ASPNET服务器端的开发环境,因而ASPNET AJAX将客户端脚本和强大的 ASPNet 20服务器端脚本相互融合。你可以更方便地创建绚丽、互动的Web应用程序界面。
采用ASPNet AJAX,你需要做的只是简单地拖拽几个控件到你的页面上,就可以使你的Web页面具有精彩的新一代AJAX用户界面的效果,同时大大地降低应用服务器层的资源消耗。
本书的主要内容和阅读对象
本书的作者Dino Esposito是MicrosoftNET技术方面的大师。本书既有原理性的讲解,也有示例说明。但本书并不是一本参考大全类型的图书,这位大师通过一些简单的例示,讲解了ASPNET AJAX实现的技术原理、基本原则、良好习惯、正确思路和应该注意的设计模式。能从本书中领会到这位大师的思想精髓和实践经验,就是读者的最大收获。如果读者能够通过书中的几个案例真正领悟这些AJAX开发的原则、习惯和思路,就一定能让自己的Web编程技术再上一个台阶。
在此感谢我的朋友王立勇、朱东峰、周瑞涛、张昱等对本书翻译和校对工作的积极参与,也感谢我的家人对我翻译工作的大力支持,没有他们的帮助,就无法早日完成本书的翻译。
您是否已经迫不及待地要一览究竟了。那么别再犹豫,让我们一起跟随Dino Esposito大师进入ASPNET AJAX的世界吧。最后,祝您阅读愉快。
成保栋
2008年3月22日
译者序
作者简介
前言
第一部分ASPNET AJAX构建模块
第1章AJAX的发展2
11变革的过程3
111传统的Web应用程序4
112基于AJAX的Web应用程序5
113Rich浏览器的角色7
12AJAX核心引擎8
121XMLHttpRequest对象9
122HTTP对象模型12
123运行自制的AJAX框架14
124再谈文档对象模型19
125ASPNET中现有的AJAX
框架22
13ASPNET AJAX实践29
131搭建ASPNET AJAX Extensions
环境29
132核心组件30
14小结32
第2章Microsoft为AJAX提供的
客户端库33
21JavaScript语言扩展33
211扩展机制的基础结构34
212面向对象的扩展44
22核心组件49
221SysApplication对象50
222SysComponent对象52
223网络协议组件55
224用户界面组件57
225其他组件和功能61
23小结63
第二部分为网站增加AJAX功能
第3章ASPNET AJAX的核心66
31ASPNET AJAX 的配置67
311Webconfig文件67
312运行时引擎69
32脚本管理器组件71
321ASPNET ScriptManager控件71
322加载脚本75
323脚本错误处理81
33小结85
第4章局部页面更新86
41定义局部可更新区域86
411UpdatePanel控件概述87
412启用页面局部更新90
413检测正在执行中的更新操作95
414UpdatePanel控件的运行机制104
42控制可更新区域109
421触发面板更新109
422触发周期性的局部更新114
423在局部更新过程中提供用户
反馈116
424局部更新的客户端事件120
425在局部页面更新期间传递
数据项目126
426在局部更新期间让面板运用
动画效果131
43小结134
第5章AJAX Control Toolkit135
51扩展器控件135
511扩展器究竟是什么136
512ExtenderControl类138
513扩展器创建示例140
52AJAX Control Toolkit简介146
521安装Toolkit147
522AJAX Control Toolkit中的
各控件150
53Accordion控件152
531Accordion控件概述152
532使用Accordion控件154
54Rating控件155
541Rating控件概述156
542使用Rating控件158
55ReorderList控件159
551ReorderList控件概述159
552使用ReorderList控件161
56TabContainer控件163
561TabContainer控件概述164
562使用TabContainer控件165
57AJAX Control Toolkit 的扩展器166
571面板扩展器166
572Button扩展器170
573弹出式扩展器173
574用户界面扩展器178
575输入型扩展器186
576Animation扩展器199
58小结201
第三部分以客户端为中心的开发
第6章内建的应用程序服务204
61表单认证服务205
611身份认证服务的系统基础
架构205
612在应用程序中使用身份认证服务209
62用户个性化服务217
621用户个性化服务的系统
基础架构218
622在应用程序中使用用户个性化
服务221
63小结226
第7章ASPNET AJAX远程方法
调用227
71为远程调用设计的服务器API228
711定义远程API的契约229
712实现远程API的契约230
72通过Web服务进行远程调用232
721创建AJAX Web服务233
722使用AJAX Web服务236
723AJAX Web服务设计原则242
73通过页面方法实现远程调用245
731创建页面方法245
732使用页面方法247
74桥接外部的Web服务251
741传统的服务器对服务器方法251
742ASPNET AJAX Futures的
桥接文件252
75小结260
第8章用ASPNET创建AJAX应用
程序实例261
81AJAX深入解析262
811AJAX的优点262
812AJAX的缺点264
813模式、实践和服务266
82重访ASPNET Starter Kits270
821Jobs Site Starter Kit速览271
822减少页面抖动272
823定期刷新屏幕278
83小结287