圖書信息
書名:GAE編程指南作者:(美) Dan Sanderson 著
ISBN:978-7-111-31452-3
定價:65.00
頁數:365
出版日期:2010年11月24日
譯者:唐學韜 何繼業 等譯
圖書分類:計算機 > 軟體與程式設計
原出版社:oreilly Associates
語種:簡體中文
開本:16
原書名:Programming Google App Engine(1E)
所屬叢書:O''Reilly精品圖書系列
圖書簡介
隨著雲計算變得越來越熱,G公司跟隨著成功的商業領導者Amazon,推出了自己的面向開發者的API業務。GAE就是其重要的一項技術。它可以幫助Web開發者構建Web應用程式,幫助小公司快速成長,並且開拓了構建Web基礎設定的新路子。
本書介紹了如何利用GAE強大的網路設施來構建Web應用程式。本書教授中級和高級的Web開發者使用App Engine來構建具有強大的可移植性的套用,介紹了使用App Engine API和服務來執行常見開發任務的方法,並說明了什麼樣的Web套用最適合使用App Engine來開發。
譯者自序
簡單來說,GAE其實就是一個Web應用程式託管平台,它使得我們有機會可以用到直正的大型企業級基礎架構來運行我們的應用程式。時下的Web應用程式其實主要也就兩大部分,一部分是數據,另一部分是邏輯,如果還有其他的部分,那就是資源這一部分了。GAE為我們所提供的也就是這幾大部分的基礎服務,我們只需要按部就班地開發程式即可,其他的一切都可以交給GAE去做。
本書共15章,深入介紹了GAE的方方面面,非常具體,是絕佳的GAE學習資料。在對GAE做了一個概括性的介紹之後,Dan立刻就教我們如何創建第一個GAE應用程式,這樣我們也就算是進了GAE的門了。然後,Dan為我們介紹了GAE的各個方面。為了使初學者能夠更好地使用Python,他還在第14章中著重介紹了Django這個Python框架。
為了方便開發人員了解GAE,本書同時使用了Java和Python。不過,我更建議大家使用Python,這是因為GAE目前對Java的支持還不是很好,而且GAE對Python還有不少額外的支持。
本書作者Dan Sanderson是一名軟體工程師,在Web領域工作了十多年,服務過很多著名的企業,經驗非常豐富。他把自己的經驗和知識都融入到本書的編寫中,再次感謝作者為我們所做的這么一件了不起的事情。希望大家能夠喜歡上GAE。
本書的主要翻譯工作由我和何繼業完成,其中第10~15章由何繼業老師翻譯,我負責其餘部分的翻譯工作以及全書的統稿工作。參加本書翻譯校對工作的還有黃惠莊、盧彥良、蒲巧惠、陳麗麗、胡元江、張楊、趙傑、吳斌、郭敏、林丹、王躍等。
由於時間緊迫,再加上譯者水平有限,書中可能會存在一些錯誤或不妥,因此,大家若是在閱讀過程中發現有任何問題,請隨時聯繫我,我們將及時更新本書的勘誤表。
唐學韜
2010年7月於廣州
圖書目錄
前言 ...................... 1
第1章 GAE簡介 ..... 9
運行時環境 .........................................9
靜態檔案伺服器 ..........................................12
數據存儲區 ..................................................12
實體和屬性...........................................13
查詢和索引...........................................13
事務 14
服務 .......16
GAccount .....................................................17
任務佇列和計畫任務 ...................................17
開發人員工具 ..............................................18
管理控制台 ..................................................19
App Engine暫時還做不到的事情 ................19
使用入門 .....................................................20
第2章 創建一個應用程式 ............................................ 22
安裝SDK .....................................................22
安裝Python SDK ..................................23
安裝Java SDK ......................................27
開發應用程式 ..............................................31
用戶偏好模式 .......................................31
開發一個Python應用程式 ....................32
開發一個Java應用程式.........................45
開發控制台...........................................60
註冊應用程式 ..............................................62
應用程式的ID和標題 ...........................63
設定域名 ..............................................64
Apps和身份驗證 ..................................65
上傳應用程式 ..............................................66
管理控制台簡介 ..........................................67
第3章 處理Web請求 .................................................. 70
App Engine的架構 .......................................71
對前端進行配置 ..........................................73
配置Python應用程式 ............................73
配置Java應用程式 ................................75
域名 76
應用程式的ID和版本號 ........................77
請求處理器...........................................78
靜態檔案和資源檔案 ............................82
安全連線 ..............................................88
通過GAccount進行授權 .......................91
應用程式是如何運行的 ...............................93
Python運行時環境 ................................93
Java運行時環境 ....................................95
沙盒 95
應用程式快取 .......................................97
日誌 ....................................................100
配額限制 ...................................................104
請求限制 ............................................104
CPU限制 ............................................104
服務限制 ............................................105
部署限制 ............................................106
付費配額 ............................................107
有關資源使用量的頭 ..........................109
第4章 數據存儲區實體 ............................................. 110
實體、鍵和屬性 ........................................ 111
Python數據存儲區API簡介 ....................... 112
Java數據存儲區API簡介 ........................... 115
屬性值 . 117
字元串、文本和位元組字元串 .............. 119
未設定與空值 .....................................120
多值屬性 ............................................120
鍵和鍵對象 ................................................121
使用實體 ...................................................123
通過鍵獲取實體 .................................123
查看實體對象 .....................................124
保存實體 ............................................125
刪除實體 ............................................126
第5章 數據存儲區查詢 ............................................. 127
查詢和類別 ................................................128
查詢結果和鍵 ............................................128
GQL .....129
Python的查詢API ......................................132
Query類 ..............................................133
Python中的GQL .................................134
獲取結果 ............................................135
Keys-Only查詢 ...................................137
Java的查詢API ..........................................138
Java中的Keys-Only查詢 .....................140
索引簡介 ...................................................140
自動索引和簡單查詢 .................................142
單個類別上的所有實體 ......................143
單個等式篩選條件 .............................143
大於和小於篩選條件 ..........................144
單個排序規則 .....................................145
針對鍵的查詢 .....................................147
類別無關查詢 .....................................148
自定義索引和複雜查詢 .............................149
多個排序規則 .....................................149
多個屬性上的篩選條件 ......................150
多個等式篩選條件 .............................153
不等於和IN運算符 ....................................156
未設定和不編入索引的屬性 ......................157
排序和值類型 ............................................158
查詢和多值屬性 ........................................159
一個簡單的例子 .................................160
Python中的MVP .................................161
MVP和等式篩選條件 .........................161
MVP和不等式篩選條件 .....................163
MVP和排序規則 ................................164
爆炸式索引.........................................166
配置索引 ...................................................166
Python中的索引配置 ..........................167
Java中的索引配置 ..............................168
第6章 數據存儲區事務 ............................................. 170
實體和實體組 ............................................172
鍵、路徑和祖先 .................................173
祖先查詢 ............................................174
事務中都會發生些什麼 .............................175
事務讀 ................................................176
Python中的事務 .........................................176
Java中的事務 .............................................178
實體是如何被更新的 .................................182
實體是如何被讀取的 .................................185
批量更新 ...................................................185
索引是如何被更新的 .................................186
第7章 用Python進行數據建模 .................................. 188
模型與屬性 ................................................189
屬性聲明 ...................................................190
屬性值的類型 .....................................191
屬性的驗證.........................................192
不編入索引的屬性 .............................194
自動值 ................................................194
列表屬性 ............................................195
模型和架構的遷移 .............................197
對關係進行建模 ........................................197
一對多關係.........................................200
一對一關係.........................................200
多對多關係.........................................201
模型的繼承 ................................................203
查詢和多態模型 ........................................204
創建你自己的屬性類 .................................206
驗證屬性值.........................................206
封送值類型.........................................207
自定義默認值 .....................................209
接受參數 ............................................210
第8章 Java持久化API .............................................. 212
設定JPA .....................................................213
實體和鍵 ...................................................214
實體的屬性 ................................................217
嵌入式對象 ................................................219
保存、獲取和刪除對象 .............................219
JPA中的事務 .............................................221
查詢和JPQL ...............................................222
關係 .....226
更多信息 ...................................................231
第9章 記憶體快取 . 232
Python的Memcache API ............................234
在Python中設定和獲取值 ..................234
設定和獲取多個值 .............................235
memcache命名空間 ............................236
快取過期時間 .....................................237
刪除鍵 ................................................237
memcache計數器 ................................238
快取統計信息 .....................................239
Java的Memcache API ................................240
第10章 獲取URL和Web資源 .................................... 245
在Python中獲取URL .................................246
在Java中獲取URL .....................................248
Python中的異步請求 .................................250
RPC對象 .............................................252
通過回調函式處理結果 ......................253
第11章 收發電子郵件和即時訊息 .............................. 256
啟用入站服務 ............................................258
傳送電子郵件訊息 .....................................259
發件人地址.........................................260
收件人 ................................................262
附屬檔案 ....................................................262
在Python中傳送電子郵件 ..................263
在Java中傳送電子郵件.......................266
接收電子郵件訊息 .....................................268
在Python中接收電子郵件 ..................269
在Java中接收電子郵件.......................271
傳送XMPP訊息 .........................................273
傳送聊天邀請 .....................................275
傳送聊天訊息 .....................................275
檢查GTalk用戶的狀態 ........................277
接收XMPP訊息 .........................................278
在Python中接收XMPP訊息 ................279
在Java中接收XMPP訊息 ....................281
第12章 大批量數據操作和遠程訪問 .......................... 283
在Python中設定遠程API ...........................284
在Java中設定遠程API ...............................285
使用Bulk Loader工具 ................................285
安裝SQLite .........................................286
備份與恢復.........................................287
上傳數據 ............................................288
下載數據 ............................................292
控制Bulk Loader ................................295
使用遠程外殼工具 .....................................296
通過腳本使用遠程API ..............................297
第13章 任務佇列和計畫任務 .................................... 299
任務佇列 ...................................................300
處理速率和令牌桶 .............................301
任務的要素.........................................302
任務處理器和重試 .............................303
對任務進行測試和管理 ......................304
在Python中使用任務佇列 ..................305
在Java中使用任務佇列.......................310
事務型的任務入隊操作 ......................313
計畫任務 ...................................................314
第14章 Web應用程式框架: Django ........................... 318
安裝Django ................................................319
創建一個Django項目 .................................320
請求處理器腳本 ........................................321
Django App Engine Helper.........................322
創建一個Django應用程式 .........................325
在Django中使用App Engine模型 ..............327
使用Django的單元測試和Fixture ..............329
使用Django表單 ........................................333
第15章 部署和管理應用程式 .................................... 337
上傳應用程式 ............................................338
使用版本 ...................................................339
管理服務配置檔案 .....................................341
管理索引 ...................................................341
瀏覽和下載日誌 ........................................343
監控數據存儲區 ........................................346
應用程式設定 ............................................346
管理開發人員 ............................................347
配額與付費 ................................................348
獲得幫助 ...................................................349