
Ajax企业级开发
《Ajax企业级开发》此书解释了AJAX 为什幺在大规模的开发中能有如此广阔的套用前景,接着系统地介绍了当前重要的AJAX 技术和组件。并在此基础上,给出了已经过证实的AJAX 架构模式,以及来源于实际的。NET 和Java AJAX 应用程式的案例研究。
基本介绍
- 书名:Ajax企业级开发
- 又名:Enterprise Ajax
- 作者:Dave Johnson, Alexei White, Andre Charland
- 原版名称:Enterprise Ajax
- 译者:张祖良,荣浩,高冰
- ISBN:978-7-115-18606-5/TP
- 类别:Web编程与设计
- 页数:300
- 出版社:人民邮电出版社
- 出版时间:2008-09-05
- 装帧:精装
- 开本:1/16
- 原出版社:Prentice Hall PTR
摘录
本书首先解释了AJAX 为什幺在大规模的开发中能有如此广阔的套用前景,接着系统地介绍了当前重要的AJAX 技术和组件。你将看到把数据表、Web 窗体、图表、搜寻和过滤连线在一起用于构建AJAX 应用程式的框架开发的整个过程;在此基础上,本书给出了已经过证实的AJAX 架构模式,以及来源于实际的.NET 和Java AJAX 应用程式的案例研究。
本书适用于任何平台上的Web 开发和设计人员。
目录
第1章 AJAX和RIA
1.1 变化中的Web 2
1.1.1 传统Web套用之痛 3
1.1.2 AJAX止痛药 4
1.2 企业中的AJAX 6
1.3 採用AJAX的驱动因素 7
1.3.1 可用性 7
1.3.2 网路利用率 9
1.3.3 以数据为中心 10
1.3.4 渐增的技巧、工具和技术升级 10
1.3.5 伺服器中立 10
1.4 关于套用 10
1.4.1 AJAX技术 11
1.4.2 编程模式 12
1.5 AJAX的替换技术 12
1.5.1 XUL 12
1.5.2 XAML 13
1.5.3 Java Applet和Web Start 13
1.5.4 Adobe Flash、Flex和Apollo 13
1.5.5 OpenLaszlo 14
1.6 小结 14
1.7 资源 15
第2章 AJAX构建块
2.1 JavaScript 16
2.1.1 JavaScript类型 17
2.1.2 闭包 18
2.1.3 面向对象的JavaScript 19
2.1.4 prototype属性 21
2.1.5 面向对象编程和继承 22
2.1.6 易变性 24
2.1.7 执行绪 25
2.1.8 错误处理 26
2.1.9 命名空间 26
2.2 DOM 27
2.2.1 基本原理 28
2.2.2 操作DOM 30
2.3 CSS 31
2.3.1 继承和层叠 32
2.3.2 内联样式 33
2.3.3 样式表 33
2.3.4 动态样式 35
2.4 事件 38
2.4.1 事件流 39
2.4.2 事件绑定 40
2.4.3 跨浏览器事件 42
2.4.4 事件对象 44
2.5 客户端/伺服器通信 44
2.5.1 XMLHttpRequest基础知识 45
2.5.2 处理数据 51
2.6 小结 53
2.7 资源 53
第3章 Web浏览器中的AJAX
3.1 基于组件的AJAX 55
3.1.1 渐增的AJAX 56
3.1.2 对伺服器的影响 56
3.2 HTML标準 57
3.2.1 文档类型定义 57
3.2.2 盒子模型 59
3.3 启动载入AJAX组件 60
3.3.1 onload事件 60
3.3.2 浏览器编码技巧 63
3.4 模型—视图—控制器 66
3.4.1 视图 66
3.4.2 控制器 68
3.4.3 模型 69
3.5 AJAX MVC 70
3.5.1 AJAX模型 70
3.5.2 AJAX视图 77
3.5.3 AJAX控制器 79
3.5.4 面向方面的JavaScript 86
3.6 小结 88
3.7 资源 88
第4章 AJAX组件
4.1 命令式组件 89
4.2 声明式组件 92
4.2.1 伺服器端声明式编程 92
4.2.2 声明式Google地图 93
4.2.3 替代方法 97
4.3 自定义声明式组件 98
4.3.1 行为式组件 100
4.3.2 声明式组件 103
4.3.3 关于声明 107
4.4 构建组件 110
4.4.1 基本功能 110
4.4.2 连线到伺服器 114
4.4.3 最终版本 117
4.5 小结 119
4.6 资源 119
第5章 从设计到部署
5.1 设计 120
5.1.1 AJAX建模 121
5.1.2 套用模型—视图—控制器模式 121
5.1.3 预先考虑性能问题 122
5.2 原型设计 123
5.2.1 线框绘製 124
5.2.2 验证设计决议 128
5.3 测试 136
5.3.1 测试驱动开发 136
5.3.2 调试 147
5.4 部署 151
5.4.1 JavaScript压缩 151
5.4.2 图片合併 155
5.4.3 保护智慧财产权 156
5.4.4 文档 157
5.5 小结 158
5.6 资源 159
第6章 AJAX架构
6.1 多层架构:从单层到多层 160
6.2 异步讯息 161
6.3 轮询 162
6.4 伺服器推送 162
6.5 跟蹤请求 163
6.6 快取:处理数据 164
6.7 基本快取 165
6.8 在组件中快取 166
6.9 在浏览器中快取 169
6.10 在伺服器中快取 171
6.11 在资料库中快取 173
6.11.1 MySQL 174
6.11.2 MS SQL Server 174
6.11.3 Oracle 174
6.12 更新伺服器模型:并发 174
6.12.1 悲观锁定 175
6.12.2 唯读锁定 175
6.12.3 乐观锁定 175
6.12.4 冲突鉴定 175
6.12.5 冲突解决 177
6.12.6 自动的冲突解决 178
6.13 流量控制 178
6.13.1 客户端 178
6.13.2 伺服器 179
6.14 可伸缩性 179
6.14.1 负载平衡和群集 180
6.14.2 AJAX可伸缩性问题 181
6.15 离线AJAX 181
6.16 FireFox离线存储 183
6.17 IE userData离线存储 185
6.18 使用Flash客户端存储 186
6.19 离线AJAX和并发 188
6.20 小结 189
6.21 资源 189
6.21.1 REST和Web服务 189
6.21.2 快取 189
6.21.3 资料库性能 190
6.21.4 离线AJAX 190
第7章 Web Service和安全性
7.1 Web Service 191
7.2 Web Service协定 192
7.2.1 表象状态传输 192
7.2.2 XML远程过程调用 192
7.2.3 Web Service 193
7.2.4 选择合适的工具 194
7.3 客户端的SOAP 196
7.3.1 IBM Web Service JavaScript库 196
7.3.2 Firefox 198
7.3.3 IE 199
7.4 跨域Web Service 200
7.4.1 伺服器代理 200
7.4.2 URL片段标识符 202
7.4.3 Flash跨域XML 204
7.4.4 脚本注入 204
7.5 安全性 205
7.6 AJAX的安全性考虑 206
7.7 跨域漏洞 206
7.7.1 跨站脚本 207
7.7.2 跨站请求伪造 210
7.7.3 JavaScript劫持 211
7.8 SQL注入 213
7.8.1 预处理语句 214
7.8.2 存储过程 215
7.8.3 XPath注入 216
7.9 数据加密和隐私 216
7.10 防火墙 217
7.11 小结 218
7.12 资源 218
第8章 AJAX可用性
8.1 常见问题 219
8.1.1 后退按钮和书籤 220
8.1.2 页面大小 228
8.1.3 自动提交 230
8.2 可访问性 231
8.2.1 识别用户的可访问性需求 232
8.2.2 JavaScript和Web可访问性 232
8.2.3 萤幕阅读器和可访问性 232
8.2.4 不该为萤幕阅读器提供的解决方案 233
8.2.5 兼容JAWS的AJAX互动 233
8.2.6 键盘可访问性 235
8.3 可用性测试 237
8.4 迅速而又随性的测试 237
8.4.1 徵募参与者 237
8.4.2 设计并运行测试 238
8.5 软体辅助测试 238
8.5.1 用于测试可用性的工具 238
8.5.2 对软体辅助测试的一般忠告 239
8.6 小结 239
8.7 资源 239
8.7.1 后退按钮 239
8.7.2 可用性测试 240
第9章 用户界面模式
9.1 显示模式 241
9.2 互动模式 248
9.3 小结 256
9.4 资源 256
9.4.1 拖曳资源 256
9.4.2 进度栏资源 257
9.4.3 活动指示器资源 257
9.4.4 颜色淡出资源 257
9.4.5 即时编辑资源 257
9.4.6 向下钻取资源 257
9.4.7 即时搜寻资源 257
9.4.8 即时表单资源 257
第10章 风险和最佳实践
10.1 风险来源 258
10.1.1 技术风险 259
10.1.2 文化/政策风险 259
10.1.3 市场风险 259
10.2 技术风险 259
10.2.1 範围 259
10.2.2 浏览器能力 260
10.2.3 可维护性 261
10.2.4 向前兼容 261
10.2.5 第三方工具支持和代码过时 262
10.3 文化和政策风险 262
10.3.1 终端用户的期待 263
10.3.2 可培训性 263
10.3.3 合法性 264
10.4 市场风险 264
10.4.1 搜寻引擎的可访问性 264
10.4.2 範围 266
10.4.3 货币化 266
10.5 风险评估和最佳实践 267
10.5.1 採用特定的AJAX框架或者组件 267
10.5.2 渐进增强和不唐突的JavaScript 267
10.5.3 Google网站地图 269
10.5.4 可视化提示 270
10.5.5 避免镀金式设计 270
10.5.6 制定维护计画 271
10.5.7 採用一种收益模型 271
10.5.8 把培训作为套用的一部分 272
10.6 小结 272
10.7 资源 273
10.7.1 搜寻引擎最佳化 273
10.7.2 统计 273
10.7.3 网站地图 273
10.7.4 萤幕截取工具 273
第11章 案例研究
11.1 基于Web 2.0重新武装美国国防部 274
11.1.1 背景 274
11.1.2 挑战 275
11.1.3 解决方案 275
11.1.4 採用技术 275
11.1.5 成果 276
11.2 Agrium公司将AJAX技术整合到实际运作中 276
11.2.1 背景 276
11.2.2 挑战 277
11.2.3 解决方案 277
11.2.4 採用的技术 279
11.2.5 成果 279
11.3 AJAX助力国际运输与物流公司 279
11.3.1 背景 279
11.3.2 挑战 280
11.3.3 解决方案 280
11.3.4 採用的技术 282
11.3.5 成果 282
11.4 小结 283
11.5 资源 284
附录A OPENAJAX HUB 285
前 言
也许你和我们所遇见的许多有才华的开发者一样,对AJAX 技术以及如何使用这项技术来改善Web 套用很感兴趣,你可能已经初步上网做了一番研究,访问过Ajaxian 网站或者阅读了关于AJAX开发的入门图书。当然,你也可能属于人数更多的另一类有才华的开发者群体,想要走进AJAX世界,开始实际使用这项技术。无论是哪种情况,我们都做了考虑。令人高兴的是,开发者社区终于开始真正理解AJAX了。其实并没有那幺难。
我们决定编写本书是因为我们对于现状很失望:关于AJAX 开发更为高级的主题的信息太少了。主要原因可能是讲述这方面主题的图书仍然还在“编写”中,而且,儘管AJAX 进入主流套用已有几年时间,但它才刚刚开始进入企业级软体开发的领地。我们希望本书能成为企业级开发者感兴趣的信息资源。为此,我们尝试把目前的开发方法与JavaScript 以及其他组成AJAX 的技术结合起来,并以所有企业级开发者都熟悉和易于理解的方式讲述。
为什幺需要本书
本书大部分内容源自多年来我们在Nitobi 公司构建AJAX 套用和用户界面组件的第一手经验。这代表了我们在开发过程中的所知所得,对于那些希望把AJAX 引入到开发项目中的开发者来说,这应该是很有用的资源。如果你想更加精通JavaScript 开发,想解决AJAX 怪癖①和性能问题,想从头设计可用性好的Web 软体,那幺本书将成为绝佳的资源。我们有足够的时间来讨论如何以一种Java或者C#开发者熟悉的方式来编写JavaScript 代码,并能使你快速上手。在这个过程中,我们会通过一些耳熟能详的软体设计模式来描述AJAX 开发,并包含了AJAX 开发过程中最热门的话题,例如安全性和离线存储。同时,不仅仅通过代码的最佳化,而且还通过利用网际网路基础设施支柱(例如快取),给出了构建高性能AJAX套用的真实解决方案。
Ajax企业级开发

本书採用了与其他AJAX 图书略微不同的方法,讨论範围较为全面,其中包括关于编程方面的大量建议,以及套用可用性、可访问性和国际化等问题的丰富讨论。本书还包含了一个框架,用于AJAX 开发项目中的风险评估。本书还特别介绍了在真实企业套用中使用AJAX 的一些开发者,看看从他们的经验中能够学到些什幺。
本书读者
本书主要面向中高级伺服器端(Java、面向对象PHP )开发者。书中的很多概念来自Erich Gamma 、Richard Helm、Ralph Johnson 和John Vlissides 所着《设计模式——可复用面向对象软体基础》一书提出的那些经过时间考验的软体工程模式。因为整本书都套用了这些思想,所以读者如果对软体设计模式有一个基本的理解,或者至少对学习这方面更多的知识有兴趣,会很有帮助。我们希望以一种常见的方式,即使用模式来描述AJAX,从而帮助更多有经验的开发者更容易地理解其中的概念和思想。
也许比理解模式更重要的是,你至少应该掌握JavaScript 、HTML 和CSS 的基础知识,甚至是理解XML 、XSLT或者JSON,这些知识也很有用,但不是必需的。除此之外,我们希望你拥有以面向对象的语言,如Java、C#或PHP等进行伺服器端编程的经验。
阅读完本书之后,开发者应该熟悉组成AJAX 的系列技术,以及面向对象JavaScript 的开发。同时,你将很好地了解有助于开发套用的工具,以及诸如安全、可用性和可访问性等各种AJAX 问题。
本书内容
第1章涵盖了AJAX 套用的基本要素
并阐明了这些要素是如何组合在一起的。同时讨论了Web 套用的演进,以及AJAX成为基于Web 套用首选解决方案的主要原因。
第2章研究组成AJAX 的各种技术
本章包含了关于使用正确的方法来编写JavaScript 的重要信息,特别关注面向对象 JavaScript 的开发、DOM、CSS 、事件和XMLHttprequest 对象,同时还包括了从客户端到伺服器端数据传输相关的问题。
第3章是基于第2章内容的扩展
为理解主流浏览器的差异奠定了基础。具备了这些知识后,我们介绍了如何使用MVC (模型—视图—控制器,Model-View-Controller )模式来构建AJAX 套用。特别是,你将明白如何在JavaScript 中编写客户端模型,如何从数据生成 HTML 视图,如何使用依赖发布—订阅(publish-subscribe )事件系统的基于JavaScipt的控制器来连线视图和模型。
第4章準备介绍如何构建AJAX 用户界面组件
特别地,我们分析了命令式和声明式方法的不同点,给出了一个构建基于AJAX的数据格线组件完整示例,同时还介绍了声明式方法的一些限制。然后,本书给出了AJAX 开发一些总体的目标和问题。
第5章从套用设计到测试,再到部署
具体分析贯穿软体开发生命周期中AJAX特有的问题。阅读完本章之后,你将很好地把握各种AJAX性能问题以及对任意的AJAX开发项目自始至终都有用的许多工具。
Ajax企业级开发

第6章为AJAX开发过程中各种架构问题 其中包括异步讯息通信模式的研究,以及与伺服器通信的方法的研究,例如伺服器推送(push)、快取、负载和离线AJAX 。虽然其中很多问题在任何基于Web 的套用上都很常见,但这里我们将从一个独特的AJAX视角来讨论这些问题。
第7章AJAX使用Web 服务来面向服务的架构
以及在构建AJAX Web 套用时可能出现的各种安全问题。
第8章讨论了可用性方面的一些问题
尤其是如何为普通的用户把这些讨论套用到AJAX套用的构建中。本章介绍了人们所关注的常见问题的完整解决方案,例如后退按钮问题、处理可访问性以及国际化的方法。
第9章探索一些强大的AJAX 用户界面模式
包括即时编辑(in-place editing)、主从複合结构(master-detail )、实时表单以及拖拽等。构建大多数的AJAX 套用时,有许多核心的用户界面设计模式是每个开发者都应该了解的。
第10章企业级AJAX 套用时的风险来源
这个主题也许是AJAX书籍中探索最少的主题,但是当考虑构建新的套用时,它与技术本身同样重要。
第11章作为总结,分析了在要求最为严格的企业环境中的一些实际AJAX 实现。我们与这些套用的开发者对话,并且倾听他们做对的和做错的事,以及下一次开发过程中将採取何种不同的实现方式。
总之,我们希望在AJAX 开发方面给你一个新的认识,最重要的是,你可以把一些新的技巧引入到你的项目开发中。