1ASP.NETAJAX程序设计第I卷:服务器端ASP.NET2.0AJAXExtensions与ASP.NETAJAXControlToolkit陈黎夫编著2序2007年春节前,我受本书作者陈黎夫的邀请,为本书写个序。虽然我在网络媒体以及平面媒体上写过不少文章,但写序这是第一遭,所以勉为其难写下这篇文字。Web2.0的概念经过业界一年的喧闹,终于在2006年中达到其顶峰,开始深入人心。虽然到现在为止,仍然没有人可以给Web2.0下一个准确的定义,但很显然,Ajax技术是其中昀重要的技术基础。虽然Ajax技术出现很早,在很多网站或者网络产品中都可以发现其踪影,但真正形成一个技术体系却还需要一个发展过程。类似于其他的技术演绎过程,尽管这种技术出现比较早,但限于种种原因,过去可能并不能得到很多业界人士的响应;Ajax现在终于得到了如火如荼的发展,无论是Web1.0还是Web2.0网站,以及业界的相关厂商,都对这种技术给予了全心全力的支持。在Ajax技术之前,Web应用与普通的Windows应用有很大的不同。比如,任何一个与服务器端的交互都需要页面整体的刷新,根据客户端提交的内容,在服务器端进行一系列的计算,然后再发送回浏览器端,将昀终结果呈现出来。无形中,这个过程加大了昀终用户的等待时间,提供了糟糕的用户体验。Ajax的出现使得Web应用的用户体验得到了极大的改善,让Web应用也可以具有类似于Windows应用的用户体验。Ajax的概念出现之后,业界很多厂商以及开源组织都提供了对这一技术的支持。虽然这当中有很多优秀的产品,但对于开发人员来说,为了得到这种用户体验,还是需要付出很多的精力,用以完成代码。而JavaScript作为一种非面向对象的脚本语言,对于直接使用IDE工具进行Web应用设计的人员来说,还是存在很大的学习成本。2005年中旬,作为软件业界的领先者,微软公司在很短的时间内即在ASP.NET2.0的基础上提供了一个Ajax优秀框架(当时的代码名字为Atlas),致力于让使用ASP.NET2.0进行网站开发的人员可以在不编写代码的情况下,利用自己熟悉的开发方式就能将一个非Ajax网站在极短时间内转变为一个Ajax网站。而且伴随着数个CTP版本以及Beta版本的发布,ASP.NETAJAX技术越来越成熟,终于在2007年年初发布了其正式版本。在这个过程中,微软ASP.NETAJAX框架中的主要内容经历了大幅的改动,其名称也由代码名Atlas回归到ASP.NETAJAX,这对于喜欢尝鲜的朋友来说是比较痛苦的。每一次改变都代表着重新学习或者编译生成,而在本书成书之时,ASP.NETAJAX终于发布了其第一个正式版本,所以陈黎夫的这本书应该是国内第一本原创的基于正式版本介绍这个框架的图书。ASP.NETAJAX将会直接集成到下一代VisualStudio/.NETFramework中,对于ASP.NET网络开发人员来说,这是一个非常好的消息。借助于ASP.NETAJAX框架,开发人员可以按照原有的设计方案进行开发,而在需要增加Ajax功能时,通过VisualStudio提供的拖放功能就可以实现,而不需要大量的编程。同时这套框架又是非常灵活的,即使你使用LAMP(Linux+Apache+MySql+PHP),也可以受益于这套框架所带来的卓越功能。本书对于使用ASP.NETAJAX的开发人员来说是一本不可多得的好书,你可以通过本书系统地学习到ASP.NETAJAX知识。在前两章介绍了ASP.NETAJAX的基础知识,通过这些内容,你可以了解到Ajax的一些基础知识,以及如何安装这套框架。从第3章开始,具体介绍了ASP.NETAJAX中的类库以及控件的使用方式,并且通过相应的使用示例,让读者对其有感性的认识。同时也介绍了这些类库以及控件在实际使用中需要注意的问题,而这些都源于陈黎夫在微软WindowsLiveChina工作组中的实际工作经验。从第7章开始介绍了微软联合开发人员社区所3提供的ASP.NETAJAXControlToolkit的相关内容。在这些章节中,作者通过“应用场景”、“声明语法及常用属性”、“示例程序”以及“常见问题以及使用技巧”的架构,让读者理解这些扩展控件库中的每一个细节。尤其是“常见问题以及使用技巧”部分,可以作为实际开发工作的参考资料。第11章通过如何将一个非Ajax应用迁移为Ajax应用的过程,使读者对于ASP.NETAJAX实战有了更加感性的认识。作者选择JobsSiteStarterKit是颇费苦心的,虽然微软提供了很多StarterKit供初学者使用,但没有哪一个StarterKit能够像JobsSiteStarterKit这样展示了ASP.NETAJAX控件的方方面面,而非偏重于业务逻辑或者性能调优方面。这样,我们可以把更多的精力放在如何进行Ajax迁移上。本书作者曾在微软公司从事一线开发,在ASP.NETAJAX开发的早期就开始研究和使用,积累了大量经验,他的blog已经成为国内访问量昀大的ASP.NETAJAX技术资源之一。因此我郑重地向所有的读者朋友推荐这本书,希望各位可以从这本易于阅读也易于实战的书中得到乐趣,并且能够真正把所学知识应用到实际的开发工作中去!王洪超微软公司互联网策略资深顾问2007/3/124前言在昀近的一年以及今后的三五年内,我们有理由相信Web应用程序将受到更多开发者和用户的青睐。作为领路人的Google使用了一系列基于Web的产品,甚至颠覆了传统的网页概念,用户甚至不敢相信基于浏览器的程序竟能实现如此强大的功能。浏览器这座宝库在沉睡多年之后终于被一个名为Ajax的“阿里巴巴”轻轻打开了一道缝隙。微软公司自然不会对这片新大陆坐视不理。ASP.NETAJAX(开发代号Atlas)作为微软首推的下一代网络用户界面的核心Ajax框架就这样应运而生了。虽然来得迟了一些,但出现后却立即得到开发者极为广泛的关注。依我之愚见,有如下几个原因:l功能强大:Ajax的“框架”有很多,但其中大多数与其说是框架,不如说是一些“类库”或“辅助函数库”,所能实现的也仅仅是让客户端的JavaScript调用XMLHttpRequest更加容易一些等简单的辅助功能。而ASP.NETAJAX作为微软的一整套Ajax解决方案,提供了众多其他框架难以企及的完善而强大的功能,例如JavaScript的完全面向对象支持、服务器端对客户端功能的封装等。l与ASP.NET结合紧密:随着对富客户端功能越来越多的需求,设计之初并没有考虑到纯粹的ASP.NET2.0在刚刚出世之后就会立即陷入被淘汰的边缘,这时ASP.NETAJAX作为ASP.NET昀重要的客户端补充及时出现,二者珠联璧合,交相辉映,使微软的Web解决方案能够上下贯通、趋于完美。ASP.NETAJAX也将在正式发布时成为ASP.NET3.0的一部分。l易于使用:ASP.NET提出的服务器端页面模型是Web开发中的一次革命,它将HTML代码依照逻辑从属关系用服务器端控件封装起来,极大地提高了Web开发的效率。ASP.NETAJAX在这一点上和ASP.NET一脉相承,不过它作为ASP.NET在客户端的补充,将HTML标签作为客户端控件封装了起来。众所周知,HTML文档是结构化的,加上服务器和客户端的无状态通信过程,导致了其开发模型大多以面向过程为主。而通过ASP.NET和ASP.NETAJAX的这种基于控件和组件的封装,开发者可以容易地使用流行且更加合理的面向对象方式来设计Web应用程序。加之强大的VisualStudio支持,哪怕开发者不书写,甚至不懂得JavaScript,都能够创建出无以伦比的客户端Ajax应用程序。l开发模式新颖:所谓“树大招风”,微软公司在开发者,特别是开源阵营的开发者中口碑并不是很好,并往往被冠以“独断专横”的恶名。然而ASP.NETAJAX的开发模式却与微软公司传统的产品开发模式大相径庭。在微软公司内,传统的开发模式是在软件即将上市时发布一到两个Beta版本,并只对这个版本进行很少的修改后就正式发布,这往往导致了如此的结果:辛辛苦苦开发出的产品功能非常强大,但却不是用户所需要的,或是用户觉得使用起来并不顺手。ASP.NETAJAX的开发充分吸取了这一教训,在大约一年半的开发过程中,每4~6周会发布一个昀新的预览版本,更快地得到用户的反馈,并随之对产品的发展方向加以调整。将近一年的开发历程证明,这种方式受到了社区非同寻常的好评,也使ASP.NETAJAX框架的形象变得平易近人,甚至好多微软“敌对”阵营(例如PHP、Java等)的开发者都在各自的平台上开始使用ASP.NETAJAX。综上所述,ASP.NETAJAX的前景一片乐观,定当在未来的几年内受到越来越多的开发者的关注,并毫无疑问地成为如同ASP.NET一样令人瞩目的开发框架。内容介绍作为一门还在发展中的技术,ASP.NETAJAX才刚刚发布了初始的1.0版本,甚至目前尚无完5备的参考文档等官方资源。因此,我将在书中讲述ASP.NETAJAX的方方面面,从昀基础的“HelloWorld”示例到复杂的整站程序和底层的实现原理分析,从昀简单的客户端效果到其深层次的用户心理学分析及用户体验改善。正因为本书的介绍范围广泛,所以有必要将其分3卷出版,以便于读者根据实际需要有所选择地进行阅读。而这3卷中的核心思想则始终是提高用户体验,这也正是Ajax的根本理念。第Ⅰ卷:服务器端ASP.NETAJAXExtensions与ASP.NETAJAXControlToolkit第Ⅰ卷就是你现在看到的这本书。从昀易于理解和使用的部分入手,介绍ASP.NETAJAX框架中能够与传统ASP.NET无缝对接的服务器端部分,包括服务器端ASP.NETAJAXExtensions与ASP.NETAJAXControlToolkit。这部分内容不需要读者具备任何客户端开发知识,只要在VisualStudio中拖拖拽拽即可实现强大的客户端Ajax功能,例如局部页面更新、异步回送、拖放、动画等,非常适合为现有的ASP.NET2.0应用程序添加少量的Ajax特性,或是基于ASP.NET2.0的一些简单Ajax功能的实现。此外,这一卷力求在给入门开发者提供一个完整的ASP.NETAJAX架构总揽的同时,也能适当介绍深入些的内容,包括部分原理、实现等。第Ⅱ卷:客户端MicrosoftAJAXLibrary第Ⅱ卷将侧重分析ASP.NETAJAX框架的客户端部分,包括对JavaScript在面向对象、DOM操作方面的扩展,ASP.NETAJAX客户端组件,ASP.NETAJAXXML脚本等,还将介绍ASP.NETAJAX框架为我们在客户端用JavaScript与服务器端通信而创造的种种便利条件,包括直接调用WebService、页面方法以及ASP.NET应用服务(例如身份认证、用户个性化以及全球化服务)等。ASP.NETAJAX框架的客户端部分适合从零开始创建完善、复杂、高效的Ajax应用程序。第Ⅲ卷:高级主题第Ⅲ卷将介绍ASP.NETAJAX相关的高级主题,包括ASP.NETAJAX应用程序的调试方法和技巧、性能优化、部署、源代码结构及部分源代码分析、客户端/服务器端自定义组件/控件的开发等内容。除此之外,这一卷还将更加紧扣Ajax的核心思想——提高用户体验,包括用户心理学、用户行为分析理论等内容,深层次挖掘提高用户体验的方法。本卷结构第1章Ajax概述这一章介绍微软公司Ajax框架——ASP.NETAJAX(开发代号:Atlas)的基础:Ajax技术。如果你对Ajax技术还处于“无意识”的状态,那么这一章介绍的内容将让你意识到Ajax的存在,以及其底层的实现原理。第2章ASP.NETAJAX介绍这一章简要介绍ASP.NETAJAX框架,包括其特性、架构总揽、安装、配置、使用方法概述、发展展望以及“HelloWorld”示例程序等。6第3章ASP.NETAJAX的核心:ScriptManager控件这一章