在最近的一年以及今后的三五年内,我们有理由相信Web应用程序将受到更多开发者和用户的青睐。作为领路人的Google使用了一系列基于Web的产品,甚至颠覆了传统的网页概念,用户甚至不敢相信基于浏览器的程序竟能实现如此强大的功能。浏览器这座宝库在沉睡多年之后终于被一个名为Ajax的阿里巴巴轻轻打开了一道缝隙。
作为业界的领袖,微软公司自然不会对这片新大陆坐视不理。ASP.NET AJAX(开发代号Atlas)作为微软首推的下一代网络用户界面的核心Ajax框架就这样应运而生了。虽然来得迟了一些,但出现后却立即得到开发者极为广泛的关注。依我之愚见,有如下几个原因:
- 功能强大:Ajax的“框架”有很多,但其中大多数与其说是框架,不如说是一些“类库”或“辅助函数库”,所能实现的也仅仅是让客户端的JavaScript调用XMLHttpRequest更加容易一些等简单的辅助功能。而ASP.NET
AJAX作为微软的一整套Ajax解决方案,提供了众多其他框架难以企及的完善而强大的功能,例如JavaScript的完全面向对象支持、服务器端对客户端功能的封装等。
- 与ASP.NET结合紧密:随着对富客户端功能越来越多的需求,设计之初并没有考虑到这些纯粹的ASP.NET 2.0在刚刚出世之后就立即陷入马上被淘汰的边缘,这时ASP.NET
AJAX作为ASP.NET最重要的客户端补充及时出现,二者珠联璧合,交相辉映,使微软的Web解决方案能够上下贯通、趋于完美。ASP.NET AJAX也将在正式发布时成为ASP.NET
3.0的一部分。
- 易于使用:ASP.NET提出的服务器端页面模型是Web开发中的一次革命,它将HTML代码依照逻辑从属关系用服务器端控件封装起来,极大地提高了Web开发的效率。ASP.NET
AJAX在这一点上和ASP.NET一脉相承,不过它作为ASP.NET在客户端的补充,将HTML标签作为客户端控件封装了起来。众所周知,HTML文档是结构化的,加上服务器和客户端的无状态通信过程,导致了其开发模型大多以面向过程为主。而通过ASP.NET和ASP.NET
AJAX的这种基于控件和组件的封装,开发者可以容易地使用流行且更加合理的面向对象方式来设计Web应用程序。加之强大的Visual Studio支持,哪怕开发者不书写,甚至不懂得JavaScript,都能够创建出无以伦比的客户端Ajax应用程序。
- 开发模式新颖:所谓“树大招风”,作为业界的领袖,微软公司在开发者,特别是开源阵营的开发者中口碑并不是很好,并往往被冠以“独断专横”的恶名。然而ASP.NET
AJAX的开发模式却与微软公司传统的产品开发模式大相径庭。在微软公司内,传统的开发模式是在软件即将上市时发布一到两个Beta版本,并只对这个版本进行很少的修改后就正式发布,这往往导致了如此的结果:辛辛苦苦开发出的产品功能非常强大,但却不是用户所需要的,或是用户觉得使用起来并不顺手。ASP.NET
AJAX的开发充分吸取了这一教训,在大约一年半的开发过程中,每4~6周会发布一个最新的预览版本,这样更快地得到用户的反馈,并随之对产品的发展方向加以调整。将近一年的开发历程证明,这种方式受到了社区非同寻常的好评,也使ASP.NET
AJAX框架的形象变得平易近人,甚至好多微软“敌对”阵营的开发者都在各自的平台上开始使用ASP.NET AJAX,例如PHP、Java等。
综上所述,ASP.NET AJAX的前景一片乐观,定当在未来的几年内受到越来越多的开发者的关注,并毫无疑问地成为如同ASP.NET一样令人瞩目的开发框架。
内容介绍
作为一门还在发展中的技术,ASP.NET AJAX才刚刚发布了初始的1.0版本,甚至目前尚无完备的参考文档等官方资源。因此,我将在书中讲述ASP.NET AJAX的方方面面,从最基础的“Hello
World”示例到复杂的整站程序和底层的实现原理分析,从最简单的客户端效果到其深层次的用户心理学分析及用户体验改善。
正因为本书的介绍范围广泛,所以我们有必要将其分3卷出版,以便于读者根据实际需要有所选择地进行阅读。而这3卷中的核心思想则始终是提高用户体验,这也正是Ajax的根本理念。
第Ⅰ卷:服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit
第Ⅰ卷就是你现在看到的这本。从最易于理解和使用的部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝对接的服务器端部分,包括服务器端ASP.NET
AJAX Extensions与ASP.NET AJAX Control Toolkit。这部分内容不需要读者具备任何客户端开发知识,只要在Visual Studio中拖拖放拽即可实现强大的客户端Ajax功能,例如局部页面更新、异步回送、拖放、动画等,非常适合为现有的ASP.NET
2.0应用程序添加少量的Ajax特性,或是基于ASP.NET 2.0的一些简单Ajax功能的实现。
此外,这一卷力求在给入门开发者提供一个完整的ASP.NET AJAX架构总揽的同时,也能适当介绍深入些的内容,包括部分原理、实现等。
第Ⅱ卷:客户端Microsoft AJAX Library
第Ⅱ卷将侧重分析ASP.NET AJAX框架的客户端部分,包括对JavaScript在面向对象、DOM操作方面的扩展、ASP.NET AJAX客户端组件、ASP.NET
AJAX XML脚本等,还将介绍ASP.NET AJAX框架为我们在客户端用JavaScript与服务器端通信而创造的种种便利条件,包括直接调用Web Service、页面方法以及ASP.NET应用服务(例如身份认证、用户个性化以及全球化服务)等。ASP.NET
AJAX框架的客户端部分适合从零开始创建完善、复杂、高效的Ajax应用程序。
第Ⅲ卷:高级主题
第Ⅲ卷将介绍ASP.NET AJAX相关的高级主题,包括ASP.NET AJAX应用程序的调试方法和技巧、性能优化、部署、源代码结构及部分源代码分析、客户端/服务器端自定义组件/控件的开发等内容。
除此之外,这一卷还将更加紧扣Ajax的核心思想——提高用户体验,包括用户心理学、用户行为分析理论等内容,深层次挖掘提高用户体验的方法。
本卷结构
第1章 Ajax概述
这一章介绍微软公司Ajax框架——ASP.NET AJAX(开发代号:Atlas)的基础:Ajax技术。如果你对Ajax技术还处于“无意识”的状态,那么这一章介绍的内容将让你意识到Ajax的存在,以及其底层的实现原理。
第2章 ASP.NET AJAX介绍
这一章简要介绍了ASP.NET AJAX框架,包括其特性、架构总揽、安装、配置、使用方法概述、发展展望以及“Hello World”示例程序等。
第3章 ASP.NET AJAX的核心:ScriptManager控件
这一章介绍ASP.NET AJAX的核心控件之一——ScriptManager,包括ASP.NET AJAX的客户端脚本文件、使用ScriptManager、添加脚本/Web
Service客户端代理的引用、处理异步更新时的异常等,还介绍了ScriptManagerProxy控件。
第4章 使用UpdatePanel控件实现局部更新
这一章介绍ASP.NET AJAX中用来实现异步回送、页面局部更新的UpdatePanel控件,包括使用UpdatePanel、触发器、更新模式、更新策略、实现原理以及使用中常见的问题。这一章还介绍用来在更新过程中给出用户提示的UpdateProgress控件。
第5章 使用扩展器控件为服务器端控件添加客户端功能
这一章介绍的扩展器控件是ASP.NET AJAX服务器端的又一类功能强大、使用简便的控件。与UpdatePanel的使用方式类似,只要在页面中添加一个扩展器控件并稍加配置,无需更改现有ASP.NET应用程序的任何代码逻辑,即可为这个传统的Web应用程序添加流行的Ajax类型的功能。此外,这一章还给出ASP.NET
AJAX内建的DragOverlayExtender和AutoCompleteExtender扩展器控件的使用方法。
第6章 其他ASP.NET AJAX服务器端控件介绍
这一章介绍了ASP.NET AJAX的另外一些服务器端控件的应用场景和使用方法,包括Timer、ProfileService、跨浏览器的WebPartManager和WebPartZone、Script,以及CTP版本中的Gadget和InitialData等。
第7章 ASP.NET AJAX Control Toolkit介绍
这一章概要介绍微软公司与开发者社区协作发布的一个强大的ASP.NET AJAX扩展控件包——ASP.NET AJAX Control Toolkit,包括其安装配置、下载文件组织结构、示例Web站点以及测试Web站点等。
第8章 ASP.NET AJAX Control Toolkit中的样式扩展器控件
这一章中介绍的这部分ASP.NET AJAX Control Toolkit控件主要着眼于“扩展”现有ASP.NET服务器端控件的表现样式,包括AlwaysVisibleControl、CollapsiblePanel、DropShadow、HoverMenu、ModalPopup、RoundedCorners、TextBoxWatermark、ToggleButton、Slider、DropDown和ValidatorCallout。
第9章 ASP.NET AJAX Control Toolkit中的功能扩展器控件
这一章中介绍的这部分ASP.NET AJAX Control Toolkit控件主要着眼于“扩展”现有ASP.NET服务器端控件的功能,包括CascadingDropDown、ConfirmButton、DragPanel、DynamicPopulate、FilteredTextBox、NumericUpDown、PagingBulletedList、PasswordStrength、PopupControl、Resizable-
Control、Animation、UpdatePanelAnimation和MutuallyExlcusiveCheckBox。
第10章 ASP.NET AJAX Control Toolkit中的独立控件
ASP.NET AJAX Control Toolkit中还提供了另外一类控件,这些控件并不依赖于现有的ASP.NET控件,而是作为独立的控件提供。这一章就介绍这部分控件,包括NoBot、Accordion、Rating和ReorderList。
第11章 实例程序:为Jobs Site Starter Kit添加Ajax功能
这一章中挑选了微软公司用来演示ASP.NET 2.0功能的Starter Kit中的一个——Jobs Site Starter Kit,并使用ASP.NET AJAX对其进行在Ajax功能、行为方面的扩展,让其拥有丰富的客户端表现与功能,并大幅度提升用户体验,力求“追赶上”目前的Ajax潮流。
读者对象
本卷适合如下读者阅读:
- 阅读过《Atlas基础教程》(由人民邮电出版社于2006年11月出版)一书、对ASP.NET AJAX产生兴趣并希望对其有更进一步了解的初级开发者;
- 希望用较简单的方法在ASP.NET应用程序中实现Ajax功能的开发者;
- 希望能够对现有的ASP.NET程序进行改进,为其添加流行的Ajax元素的开发者;
- 其他对Web开发感兴趣的开发者。
你需要如下专业知识,以便更好地阅读本书:
- 了解基本的ASP.NET 2.0相关知识(使用C#或Visual Basic.NET语言);
- 了解基本的面向对象设计/开发原理。
预先需求
若要安装并使用ASP.NET AJAX框架的全部功能进行开发,那么你的系统必须满足如下条件:
- Windows 2000、Windows XP、Windows Server 2003或Windows Vista操作系统;
- Microsoft .NET Framework Version 2.0或以上版本;
- 至少一种流行的浏览器:IE5.01(推荐使用IE6.0及以上版本)或FireFox 1.5及以上版本;
若想在开发和调试过程中得到更好的支持,请安装如下软件:
- Visual Studio 2005(各版本均可)或Visual Web Developer Express Edition(免费);
- Visual Studio 2005 Service Pack 1(强烈推荐)。
示例代码
你可以至人民邮电出版社图灵网站(http://www.turingbook.com/)或我的博客网站(http://dflying.cnblogs.com)下载本书中所提到的示例程序代码,这些代码均采用C#语言编写。
勘误以及与作者联系
尽管在编写本书的过程中我努力做到严谨无误,但限于个人水平以及时间,书中难免有所遗漏或错误,这些可能存在的问题均与微软公司以及ASP.NET AJAX框架无关。我真诚地期望各位读者能够不吝指出书中的错误并告知我,我们将在重印时予以更正。本书的勘误也将发布在我的博客网站和图灵网站上。
你可以通过博客网站(http://dflying.cnblogs.com)或Email(DflyingChen@hotmail.com)与我取得联系。
致谢
虽然封面上只有一个人的名字,可是如果没有朋友们的支持,我绝不可能独立完成这样艰巨的任务。
感谢人民邮电出版社图灵公司的傅志红女士、刘江先生和谢工女士,他们在本书的策划、撰写、校对的全程都给了我事无巨细的指导和帮助。
感谢博客园网站(www.cnblogs.com),特别是站长dudu多年以来不求回报的无私奉献,为我们.NET爱好者提供了这样一个完美的技术交流平台。
感谢博客园的阿一、aspnetx、高海东、太阳、难得一蠢、Cat Chen、Clingingboy、WXWinter(冬)、TerryLee、Jeffrey Zhao、FantasySoft、木野狐、GerryJiang、MK2、小小、stpangpang、天轰穿、剑在上海^_^、CrazyCoder、ZergTant、ddee、Minwell、birdshome、哈密瓜牌牛奶、小陆、chy710、XRAY2005、Jasun、kane、flyingbugs、Tery
Sun、Jim Jiang、金戈铁马、culturenet、今天、wanclark、Anytao、Denny Zhang、云出岫、从无到有.NET、阿冬、hlj、jun、chuchenggang、wilburn、不做懒人、bugSharp、双飞燕、fhmsha、ABeyondMe、evanszhang、坚强2002、yunhuasheng、apan、Justin、锡山飞狐、dolby等朋友(人数众多,恐有遗漏,还请朋友们见谅)在我写作过程中给出的宝贵反馈与建议。特别是在ASP.NET
AJAX的那次大变动之后,我曾一度心灰意冷,想就此放弃。是你们帮我拨开阴霾,重见阳光!
感谢微软(中国)有限公司Windows Live Mail和Windows Live Calendar团队的同事,过去两年中的点点滴滴,是我人生中莫大的财富。特别是俞翔先生、陈竹修小姐和Aditya
Bansod先生,在本书进行章节计划时给了我诸多中肯的建议。
感谢众多支持我的、未曾谋面的朋友,我们之间的讨论让我更深入地理解了ASP.NET AJAX,最终有勇气提笔创作。
感谢微软(中国)有限公司的王洪超(网名:开心就好)先生在百忙中抽出时间为本书作序。
感谢我的家人和身边的朋友,是你们的爱让我从懵懂一步步走向成熟。
陈黎夫
Dflying Chen