《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
摘錄,目錄,第1章 AJAX和RIA,第2章 AJAX構建塊,第3章 Web瀏覽器中的AJAX,第4章 AJAX組件,第5章 從設計到部署,第6章 AJAX架構,第7章 Web Service和安全性,第8章 AJAX可用性,第9章 用戶界面模式,第10章 風險和最佳實踐,第11章 案例研究,前 言,本書內容,第1章涵蓋了AJAX 套用的基本要素,第2章研究組成AJAX 的各種技術,第3章是基於第2章內容的擴展,第4章準備介紹如何構建AJAX 用戶界面組件,第5章從套用設計到測試,再到部署,第7章AJAX使用Web 服務來面向服務的架構,第8章討論了可用性方面的一些問題,第9章探索一些強大的AJAX 用戶界面模式,第10章企業級AJAX 套用時的風險來源,
摘錄
本書首先解釋了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 的一些開發者,看看從他們的經驗中能夠學到些什麼。
本書讀者
本書主要面向中高級伺服器端(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開發項目自始至終都有用的許多工具。
第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 開發方面給你一個新的認識,最重要的是,你可以把一些新的技巧引入到你的項目開發中。