本书介绍了微软公司的Ajax解决方案Atlas技术,从对Ajax的概述中引入Atlas,接下来引出Atlas框架的概念,并介绍了Atlas是如何在ASP.NET环境中运行的。本书演示了Atlas的客户端和服务器端功能,并详细分析了各个脚本库和控件以及它们的使用方法。
本书适于Web应用开发人员,也可供高等院校计算机专业师生参考。
目 录
第1章 Ajax概述 1
1.1 Web应用程序的发展历程 1
1.2 客户端应用程序扭转败局 7
1.3 Ajax登上舞台 8
1.4 使用XMLHttpRequest对象 9
1.5 使用Visual Studio 2005 11
1.6 简单示例实做 11
1.7 小结 14
第2章 Atlas:将Ajax提升 到新的高度 16
2.1 ASP.NET 2.0服务器端控件介绍 16
2.2 Atlas架构介绍 20
2.2.1 Atlas客户端脚本库 22
2.2.2 JavaScript对象标记 22
2.2.3 Atlas Web用户界面 23
2.3.4 Atlas Web UI数据绑定 24
2.2.5 创建Atlas组件 27
2.2.6 Atlas行为 29
2.3 小结 30
第3章 Atlas:让客户端JavaScript开发变得更容易 31
3.1 在Atlas中使用JavaScript 31
3.1.1 创建第一个Atlas应用程序 31
3.1.2 添加一个自定义的JavaScript类 32
3.1.3 使用Atlas ScriptManager将自定义类发送至客户端 34
3.1.4 编写并运行应用程序 37
3.2 在JavaScript中使用命名空间 39
3.3 在JavaScript中使用继承 40
3.4 在JavaScript中使用接口 42
3.5 使用JavaScript访问服务器端资源 44
3.6 小结 48
第4章 使用AtlasUIGlitz脚本库 49
4.1 简单的示例 49
4.2 使用Atlas客户端UI控件 52
4.2.1 Control控件 52
4.2.2 Label控件 54
4.2.3 Button控件 55
4.2.4 InputControl控件 57
4.2.5 TextBox控件 59
4.2.6 Image控件 61
4.2.7 HyperLink控件 62
4.2.8 CheckBox控件 64
4.2.9 Select控件 66
4.3 使用Atlas脚本 68
4.4 小结 75
第5章 使用Atlas客户端控件 76
5.1 使用CSS操作控件 77
5.1.1 使用JavaScript 77
5.1.2 使用Atlas脚本 82
5.2 直接操作控件 87
5.2.1 使用JavaScript直接操作控件 87
5.2.2 使用Atlas脚本直接操作控件 89
5.3 在数据绑定中应用转换器 93
5.3.1 使用Atlas脚本 93
5.3.2 使用JavaScript 95
5.4 在数据绑定中应用自定义的转换器 97
5.5 使用JavaScript实现自定义绑定 101
5.6 执行基本的输入验证——确保输入不为空 104
5.7 执行基本的输入验证——检查输入的数据类型和范围 107
5.8 使用Click行为 111
5.9 使用鼠标的Hover行为 114
5.10 在鼠标悬停时使用Pop-up行为 116
5.11 使用拖放行为 119
5.12 小结 122
第6章 Atlas服务器端控件介绍 123
6.1 将Atlas服务器端控件添加到Visual Studio 2005中 123
6.1.1 创建一个Atlas网站 123
6.1.2 将Atlas服务器端控件添加到
Toolbox中 124
6.2 ScriptManager控件介绍 126
6.2.1 使用ScriptManager的设计器界面 126
6.2.2 使用ScriptManager控件编程 127
6.3 ScriptManagerProxy控件介绍 136
6.4 UpdatePanel控件介绍 139
6.4.1 使用UpdatePanel控件的设计器 140
6.4.2 UpdatePanel控件编程 141
6.5 UpdateProgress控件介绍 144
6.6 控件扩展器介绍 145
6.6.1 AutoCompleteExtender介绍 145
6.6.2 使用DragOverlayExtender 146
6.7 ProfileScriptService控件介绍 149
6.8 Timer控件介绍 150
6.9 Gadget控件介绍 152
6.10 小结 158
第7章 使用Atlas服务器端控件 160
7.1 使用UpdatePanel控件 160
7.2 使用任务列表管理器 164
7.3 使用Atlas Wiki应用程序 174
7.3.1 Atlas Wiki应用程序介绍 174
7.3.2 运行Atlas Wiki应用程序 176
7.3.3 理解以异步方式进行的用户登录 178
7.3.4 创建Wiki用户 181
7.3.5 理解以异步方式进行的创建文章 184
7.3.6 理解以异步方式进行的创建内容表格 187
7.4 小结 189
第8章 Atlas中的数据绑定 191
8.1 Sys.Data命名空间中控件介绍 192
8.1.1 DataSource控件介绍 192
8.1.2 DataView控件介绍 193
8.1.3 DataTable控件介绍 194
8.1.4 DataColumn控件介绍 195
8.1.5 DataRow控件介绍 196
8.1.6 Sys.UI.Data命名空间中控件介绍 196
8.1.7 ItemView控件介绍 196
8.1.8 ListView控件介绍 198
8.2 开始使用数据绑定 200
8.3 使用DataSource控件 207
8.4 通过DataSource控件读取或写入数据 216
8.5 小结 226
第9章 使用AtlasUIGlitz脚本库 227
9.1 使用OpacityBehavior行为 227
9.2 使用LayoutBehavior行为 229
9.3 使用FadeAnimation动画 230
9.4 使用LengthAnimation动画 234
9.5 使用NumberAnimation动画 237
9.6 使用DiscreteAnimation动画 240
9.7 小结 243
第10章 使用Atlas地图组件 245
10.1 地图功能演示 245
10.2 Atlas地图控件介绍 246
10.3 Atlas地图控件编程 252
10.3.1 设置经度和纬度 252
10.3.2 设置缩放级别 254
10.3.3 选择地图类型 255
10.3.4 切换到某个位置 257
10.3.5 通过指定变化量切换到新位置 259
10.4 使用图钉 260
10.5 小结 262
第11章 使用ASP.NET和Atlas 创建简单应用 263
11.1 理解应用架构 264
11.1.1 创建公司信息面板 266
11.1.2 创建历史价格面板 273
11.1.3 生成历史价格图表 278
11.1.4 生成分析图表 286
11.2 使用Atlas客户端控件对UI进行增强 290
11.3 小结 295
当在书店中翻到本书的这一页,或是在网上看到这篇文字时,相信读者已经或多或少对最近一两年Web的发展有所了解并产生了兴趣。随着技术的日新月异以及商业竞争的日趋残酷,用户体验也在不知不觉中成为了程序开发中要考虑的最重要的部分:用户都是懒惰的,不愿意为了使用你的程序去下载一个软件;用户更是小心的,在系统中安装某个插件都会让他们很不舒服;用户还是挑剔的,若你的程序使用起来不顺手,他们就会立即扬长而去。
天哪,这就是事实!幸运的是——Ajax应运而生,但它在带给用户舒舒服服、轻轻松松、皇帝一般享受的同时,也同时带给我们开发者混乱无比、极为黑暗、奴隶一般的开发过程。朋友们,别以为我是在开玩笑或是在耸人听闻,当有一天你也需要让JavaScript那稚嫩的肩膀挑起如此沉重的上万行代码时,就会切身体会到其中的艰辛。
微软再一次露出了它的霸气:一夜之间,略带稚气但却足够威武的Atlas已经站到了Ajax框架的比武擂台上。与遗留ASP.NET系统的方便整合、完全面向对象的客户端JavaScript组件模型这两大绝杀很快引得开发者连连叫好。然而,Atlas却并没有微软的其他产品那样的霸道和傲气,在平时的生活中它是一个“平易近人的小伙子”。每4周~6周都把自己最新学到的武功展示给大家看,并细心听取人们的意见(CTP发布模式,Atlas Control Toolkit协作开发模型等),勇于毫无保留地展露自己的内心世界(源代码完全开放),甚至对自己家族的敌人仍旧竭力帮助(可以与任何服务器端平台结合使用)。
但是,Atlas毕竟还年轻。它强大而纷繁的武功招式(完善而庞大的框架)往往让别人不易了解,它武功自成一派且发展迅速,尚没有系统的解释(缺乏文档和示例),加之它天生口才略逊(JavaScript难以自我描述,且没有好的IDE支持),以至于拜师学艺的人虽多,却又大多不知从何开始。
Laurence Moroney先生作为资深元老,凭着自己的经验以及和Atlas开发团队的良好关系,为我们带来了这一本Atlas的武功入门宝典。本书系统地介绍了接触Atlas、学习Atlas以及使用Atlas独门武功的方法,也为我们这些门外汉指点了一个初入门道的方法。
然而Laurence Moroney先生的著作是用异国文字书写的,虽然天下国际化趋势愈演愈烈,但许多国内人士仍觉得难以悟得其中精髓。幸而有人民邮电出版社出头筹划,并让我有幸成为该书的译者,该书的中文翻译版本才得以与大家见面。
原书作于半年前,而在这半年中Atlas又有了长足的发展,并带来了巨大的变化,以至于原作中许多内容现在均已不再适合,我在翻译过程中均将这些过时的内容更新至最新的7月份版本。同时,由于Atlas极为庞大纷繁,原作中存在一些遗漏甚至错误,在译本中我同样努力去伪存真,将其更正。瑕不掩瑜,作为世界上第一本介绍Atlas的著作,相信本书一定能给各位朋友带来相当大的收获。
在翻译也是学习的过程中,我得到了众多朋友的关心。感谢微软公司的Richard Wong先生和Aditya Bansod先生在翻译的开始时帮我理顺公司的法律事宜,并在翻译结束时帮我疏通文法。感谢Scott Guthrie和Shanku Niyogi两位公司里的大人物以及原作者Laurence Moroney先生为我的中文版作序。感谢微软公司Windows Live Hotmail团队的每一位成员,他们在翻译中给了我很多建议和鼓励,能和他们在一起工作,是我莫大的荣幸。感谢夏雪晴小姐在翻译过程中给我的关心,并帮我校对润色译文。感谢博客园的朋友们,是他们提出的建议以及对我的支持鼓励让我迈出了这重要的一步。感谢人民邮电出版社的傅志红编辑,给了我如此宝贵的机会并让我熟悉了著作出版的过程。
尽管我在翻译时努力地争取做到严谨无误,但由于时间匆忙,且限于自身水平,译本中难免有所疏漏或不足。这些可能存在的问题均与微软公司以及Atlas框架无关。我真诚地期望各位读者能够不吝指出书中的错误。读者可以通过我的博客(http://dflying.cnblogs.com/),或Email(DflyingChen@hotmail.com)与我联系,欢迎提出宝贵意见。本书的更正也将发布到我的博客网站上。
最后,我要特别地把这本译作献给我的母亲石颖萍女士,感谢您20多年含辛茹苦不求回报的养育之恩。
译者
2006年7月
译者介绍
陈黎夫(Dflying Chen),2005年毕业于上海交通大学计算机科学专业。同年作为软件开发工程师加入微软公司的Atlas创始团队——Windows Live Hotmail,曾使用Atlas参与开发了下一代Email系统Windows Live Mail以及Windows Live Calendar等产品, 擅长We
Laurence Moroney是提供跨平台技术服务的Mainsoft公司的技术传播总监,拥有10多年软件开发和架构经验,设计并实现的软件被广泛地应用于各行各业中。他曾经撰写了多本有关ASP.NET、Web服务的专著。就职于Mainsoft公司之前,他曾作为架构师任职于路透社,负责开发金融和通信应用软件。
2006年,Ajax迅速成为Web开发的一个热点,也成为开发以用户为中心的Web应用程序的事实标准。Ajax是用户体验的一次革命性进步,正逐渐被用于越来越多的Web应用程序中,例如Google Local地图、Live.com以及Amazon等。
但如何编写Ajax应用程序呢?你需要成为一个JavaScript专家,并不得不使用一些远不如C#或Java那样完善的开发工具。因此,由于其先天的不友好性,开发、调试以及维护Ajax应用程序的过程将变得非常艰难并耗费大量的时间。
微软公司开发的Atlas框架对这个棘手的问题给出了一种解决方案。Atlas建立在强大的ASP.NET技术以及Visual Studio 2005集成开发环境之上,将会为Ajax开发的效率带来飞跃式的提升。
借助Atlas的帮助,开发者可以轻松地为现有的ASP.NET应用程序添加Ajax类型的功能。通过简单的声明式编程,即可为应用程序添加完善的用户界面元素(例如拖放)、网络访问以及浏览器兼容层等功能(当然如果你喜欢,也可以使用JavaScript的方式)。
本书是Atlas技术的初级读本。将从回顾Web应用程序的发展历史开始,进而引出Ajax的概念,然后介绍通过使用Atlas,并借助Visual Studio 2005提供的IDE的高效率,以及完整的调试支持,引导你更加简单迅速地开发Ajax应用程序。
阅读本书将是一个愉快的过程,在通读本书后,你将成为一个Web 2.0领域内的专家,并迫不及待地希望开始属于你的Web 2.0之旅。谁知道呢?或许你已经开始推动Web 3.0了!
读者对象
本书适合任何对下一代,即使用了Ajax式异步更新的Web应用程序开发感兴趣的读者。只要是曾经编写过Web页面的开发者都会了解与回送和维护状态相关的原有Web模型的潜在问题,因此在阅读了本书中对Atlas这种非常有价值的新编程工具的介绍之后,定会有所收获。
即使不熟悉ASP.NET、C#或Visual Basic .NET,仍然可以理解并跟上本书的介绍。仅了解这些技术将会对本书的阅读有极大的帮助。
本书结构
本书将从回顾软件的用户界面开始,从最早的穿孔卡片介绍到最新的Ajax应用程序。这部分将分析瘦客户端模型是如何减少部署的开销以及复杂性的,并讲述一个关于Ajax式的应用程序是如何在911恐怖袭击之后迅速地帮助华尔街社区重新运作的真实故事。
然后,本书将介绍Ajax的概念以及其工作原理,因此即使你尚不熟悉Ajax,也可以很快理解这一热门技术。
接下来引出了Atlas框架的概念,并介绍了Atlas是如何在ASP.NET环境中运行的。其中演示了Atlas的客户端和服务器端功能,并详细分析了各个脚本库和控件以及它们的使用方法。
在本书的介绍过程中均包含有示例以及必要的图示,以方便学习。在最后一章还专门介绍一个大规模的应用程序,将所有本书中提到的概念融合到一起。这绝对是一本非常实用的技术图书。
预先需求
需要安装Visual Studio 2005,任意版本均可。同样需要Atlas的安装程序以及其中包含的Visual Studio 2005项目模板,可以在http://atlas.asp.net网站中下载。
示例代码
在Apress出版社的网站(http://www.apress.com)上可以逐章下载本书的示例代码。为方便起见,代码均被压缩成单一的zip文件。
与作者联系
可以通过Email:ljpm@philotic.com,或网站:http://www.philotic.com/blog联系到作者Laurence Moroney。
致谢
借此机会,我要感谢在编写本书过程中对我提供极大帮助的人们:
Scott Guthrie,微软公司Atlas技术的总负责人,在我了解Atlas技术并编写本书时提供了极其耐心的支持。
Shanku Niyogi,微软公司ASP.NET的团队项目经理,他曾与我见面并讨论了本书的写作方式,还细心听取了我对Atlas技术发展方向的看法,并在Atlas技术处于早期阶段时帮助修复我的代码中的缺陷。
Keith Smith,微软公司ASP.NET和Atlas技术的产品经理,是目前为止我所遇到的最好的技术审阅者。他以一种一针见血、依据事实且格外令人愉悦的方式不断帮助我修订本书,直至今天的样子。
Simon Calvert,Atlas项目开发者,帮助我了解Atlas中尚未提供完善文档的部分。我要衷心地感谢他——本书的另一位技术审阅者!
Wilco Bauwer,最好的Atlas技术博客(http://www.wilcob.net)之一。
Nikhil Kothari,也是最好的Atlas技术博客(http://www.nikhilk.net)之一。
Joel Bonette,路易斯安那州州立大学研究员,通过我的博客网站发现了本书,并且也成为了本书的第一个购买者。在我无法弄清楚Atlas中尚未提供文档的那部分特性的那些黑暗且充满挫折感的日子里,他给了我莫大的鼓励。
Ewan Buckingham,Apress出版社的编辑,真是一位完美的编辑——给了我完全的信任,对书写的内容从不插手。
Kylie Johnston,Apress出版社的项目经理,让我头脑清醒且愉悦地完成了写作的过程。
Kim Wimpsett,本书的文字编辑,在出版过程中没有对书中文字做太多的修改,让我感觉非常愉快。
噢,谢天谢地,这并不是奥斯卡颁奖典礼上的致辞,如果是这样的话将有太多的人来不及感谢。幸运的是这是一本书,让我有机会列出所有给了我帮助的人!
无封面