[Windows Azure][Book] Windows Azure Platform 應用程式開發教戰手札 2/e (Windows Azure 教戰手札 2/e 開發人員篇)

歷經幾次的大型改版以及被編輯追殺的過程後,Windows Azure 教戰手札的第二版 Part 1: Windows Azure Platform 應用程式開發教戰手札 2/e 終於要在 2013/3/8 正式上市了。

歷經幾次的大型改版以及被編輯追殺的過程後,Windows Azure 教戰手札的第二版 Part 1: Windows Azure Platform 應用程式開發教戰手札 2/e 終於要在 2013/3/8 正式上市了。

碁峰官方介紹:http://books.gotop.com.tw/a_ACL036700

天瓏書店預購網址:http://www.tenlong.com.tw/items/9789862767658

博客來線上預購網址:http://www.books.com.tw/exep/prod/booksfile.php?item=0010578936

這本書結合了 2011-2012 年度 Spring Release 以及 Windows Azure Platform 演化的功能,是中文市場中首本涉及 2012 Spring Release 的中文書,包含了 Compute, Storage, Database, Caching, Service Bus 等主要服務,乃至於最新的 Mobile Service 以及 Website 等重要又實用的服務都會在本書完整揭露,精采程度比上一版有過之而無不及,同時本書的厚度比 1/e 增加了18%,但卻只多一杯珍奶的價錢 :)

在撰寫本書時,除了要考慮 Windows Azure Platform 服務的演化,還要考慮到校園的用書時程,雖然己經盡力的校對與編修,但仍舊有一些遺珠之憾,例如這兩天才發行的繁體中文介面,Service Bus Notification Hub,Web Endpoint Monitoring,Mobile Service Support for Android, SQL Reporting Service in New Portal 等部份都沒辦法及時反映在書中,不過筆者承諾,未來在下一個版本出來之前,這些新的內容會做適當的增補,未來這本書也會發行電子版,屆時最新的增補會很快的反應在電子書內。

同時,針對 Infrastructure 那一塊的部份並未涵蓋在本書中,將在本書的姐妹作 Windows Azure 教戰手札的第二版 Part 2: Windows Azure Platform 基礎建設教戰手札 中作完整的介紹和說明,預計五月下旬問世,屆時還請大家多多支持。

第二版 序

距前一版書籍付梓已兩年有餘,雲端運算產業正如大家所預期的迅速發展,從初始雲的階段漸次轉變為成長階段,各大雲端供應商也藉由多樣化的服務來爭取用戶使用,像Google也要加入基礎建設雲的服務,正式和Amazon的EWS宣戰,虛擬化技術在VMware和Hyper-V的競爭下也有了突破性的進展,虛擬化的能力比兩年前更強了,並在主要網路設備供應商的奧援下,產生了新的軟體定義網路 (Software Defined Network; SDN) 規格,以支援資料中心的網路虛擬化等,一切的一切都在說明雲端運算已逐漸成為IT產業的重要份子之一。

微軟身為雲端的主要供應商之一,當然也不會坐視這樣的發展,所以在2010年Windows Azure服務正式開放全球服務後,不斷的在Windows Azure內加入或改良功能,並且在微軟最擅長的開發工具與平台部份做了很大幅度的改變,開發人員更容易的運用Windows Azure平台上的服務開發應用程式,而Windows Azure也積極的向開放原始碼陣營推廣,並取得了長足的進步,像PHP/Java以及Python等技術現在都可運用在Windows Azure上,更令人驚艷的是在開放原始碼陣營中常被大量運用的node.js/memcached乃至於Hadoop等平台也都逐漸的導入到Windows Azure的服務當中,顯見Windows Azure開發團隊的努力己獲得了相當豐碩的成果。

就在2012年的六月初,微軟發表了Windows Azure兩年來最大規模的Spring Release改版,加入了基礎建設的Virtual Machine服務與Virtual Network服務,將Windows Azure的應用領域推向更廣的境界,企業能運用自己已有的IT能量在Windows Azure環境中建構自己的私有雲或是連接企業本地端的私有雲形成混合雲基礎建設;Media Service在2012倫敦奧運的應用讓它成為被認可的影音串流服務;隨後推出的Mobile Service大量簡化了app開發人員的負擔,讓app和雲端整合的真正『雲加端』應用成為事實。

Windows Azure改變如此之大,促成筆者起草本書的第二版,內容相較於第一版大幅改寫了將近九成,將新的Windows Azure服務納入書中,以呈現Windows Azure的多元技術與開發方式,並改用地表最強的開發工具Visual Studio 2012來介紹Windows Azure的開發,以符合技術的潮流。未來,本書的內容仍會跟隨著Windows Azure平台的演進做不定時的更新,也期待本書能夠幫助讀者進入雲端開發的世界。

最後,本書由於倉促付梓,難免會有疏漏或錯誤之處,如果內容謬誤或是您有任何寶貴的意見,或是想要與筆者討論的話,歡迎到筆者的部落格、Facebook或是噗浪來和筆者取得聯繫。

第二版 誌謝

本書的完成,首先要感謝的是台灣微軟的Windows Azure Platform團隊,包含:

  • 台灣微軟伺服器平台事業部資深協理 周旺墩先生
  • 台灣微軟應用架構技術協理 李匡正先生
  • 微軟大中華區資深開發技術經理 張書源先生
  • 台灣微軟開發工具暨平台推廣處應用開發技術經理 上官林傑先生

本書的重要技術資訊的支援以及Windows Azure Platform的發展動態等資訊都是由台灣微軟Windows Azure Platform團隊所提供的,若沒有他們,筆者可能要再花數倍以上的時間才能完成本書,特此致謝。

接著筆者要感謝的是不斷積極與敦促筆者寫作的幾位老師:

  • 僑光科技大學資訊科技系 蔡文龍老師
  • 資策會台北教育訓練中心 蘇國鈞老師
  • Windows Phone開發技術的推廣者 董大偉 (David) 老師
  • Windows Store App首席偶像 鍾俊次 (Bill Chung) 老師
  • 本書第一版的催生者,Kinect for Windows開發教主 王森 (Moli) 老師

如果沒有他們三不五時的在Facebook上提醒,可能這本書無法在短時間內問世。

再來要感謝本書的編輯江佳慧 (Novia) 小姐,感謝她在本書難產之際願意體恤筆者的忙碌程度,給予筆者最大的時程調整空間,沒有給筆者太大的時間壓力,讓筆者能在最大的時間調整彈性下完成本書,於此再次致上誠摯的謝意。

最後,筆者將本書獻給我的家人、好友以及工作夥伴們,如果沒有他們,筆者無法專心全力的撰寫本書,也無法讓本書順利的付梓,感謝家人與好友們的支持,以及工作夥伴的體諒與協助。

第二版 目錄

Chapter 1 雲端運算簡介 (整併章節)


1.1 雲端運算的定義......................................................................................... 1-1
1.2 雲端的服務模式......................................................................................... 1-6
1.2.1 基礎建設服務............................................................................... 1-6
1.2.2 平台服務.................................................................................... 1-10
1.2.3 軟體服務.................................................................................... 1-12
1.3 雲端運算使用的技術............................................................................... 1-12
1.3.1 虛擬化技術................................................................................. 1-12
1.3.2 海量級分散式運算技術.............................................................. 1-17
1.3.3 海量級分散式儲存技術.............................................................. 1-20
1.3.4 多租戶技術................................................................................. 1-25
1.3.5 自治系統.................................................................................... 1-28
1.4 雲端運算所帶來的影響........................................................................... 1-30
1.4.1 對企業的影響............................................................................. 1-30
1.4.2 對IT 職務的影響....................................................................... 1-31
1.5 評估雲端運算.......................................................................................... 1-32
1.5.1 雲端運算的考量因素................................................................. 1-32
1.5.2 企業適用雲端運算的情境.......................................................... 1-35
1.6 結語.......................................................................................................... 1-38

Chapter 2 Windows Azure Platform 概觀 (新章節)


2.1 雲端運算與微軟......................................................................................... 2-1
2.2 微軟的雲端運算實現-Windows Azure Platform ........................................ 2-7
2.3 基礎建設服務.......................................................................................... 2-12
2.4 平台服務.................................................................................................. 2-14
2.4.1 運算服務.................................................................................... 2-15
2.4.2 儲存服務.....................................................................................2-18
2.4.3 診斷功能.....................................................................................2-20
2.4.4 服務管理.....................................................................................2-22
2.4.5 應用程式伺服器服務..................................................................2-22
2.4.6 資料庫服務..................................................................................2-25
2.4.7 網路服務.....................................................................................2-26
2.4.8 支援型服務..................................................................................2-28
2.5 工具與資源...............................................................................................2-30
2.5.1 Windows Azure SDK ...................................................................2-30
2.5.2 Visual Studio 工具.......................................................................2-31
2.5.3 對開放原始碼陣營的承諾...........................................................2-37
2.5.4 支援工具.....................................................................................2-39
2.6 結語...........................................................................................................2-43

Chapter 3 深入Windows Azure Platform 架構 (改寫增補)


3.1 微軟資料中心............................................................................................ 3-1
3.2 Windows Azure 核心.................................................................................. 3-4
3.3 服務供應流程...........................................................................................3-10
3.4 高可用服務架構與配置............................................................................3-17
3.5 服務更新模型...........................................................................................3-21
3.6 2012 年閏年服務中斷事件.......................................................................3-23
3.6.1 自動化機制的核心-時間...........................................................3-24
3.6.2 臭蟲發生與服務中斷..................................................................3-24
3.6.3 微軟的應變處理..........................................................................3-26
3.7 結語...........................................................................................................3-27

Chapter 4 Windows Azure Platform 應用程式開發基礎 (40%改寫)


4.1 開發環境的準備......................................................................................... 4-1
4.2 模擬環境.................................................................................................... 4-3
4.2.1 雲端儲存模擬器Storage Emulator ............................................... 4-5
4.2.2 雲端運算模擬器Compute Emulator............................................4-10
4.2.3 深入模擬器架構......................................................................... 4-13
4.3 將本地與雲端建立關聯-設定管理憑證................................................. 4-17
4.3.1 使用Windows Azure 發行精靈設定管理憑證........................... 4-18
4.3.2 由Visual Studio 產生管理憑證.................................................. 4-22
4.3.3 手動產生管理憑證..................................................................... 4-26
4.4 開發第一支雲端服務應用程式................................................................ 4-27
4.5 撰寫第一支雲端背景工作角色應用程式................................................. 4-30
4.6 發行應用程式到雲端............................................................................... 4-35
4.6.1 手動發行應用程式..................................................................... 4-36
4.6.2 由Visual Studio 發行應用程式.................................................. 4-42
4.7 管理雲端環境.......................................................................................... 4-47
4.7.1 由Visual Studio 監控雲端環境.................................................. 4-47
4.7.2 使用遠端桌面............................................................................. 4-50
4.8 使用診斷資訊.......................................................................................... 4-58
4.8.1 Diagnostics API(診斷API) .................................................... 4-58
4.8.2 Windows Azure Diagnostics API 運作原理................................ 4-67
4.8.3 利用Windows Azure Diagnostics 來產生自訂記錄檔................ 4-69
4.9 存取角色環境組態功能........................................................................... 4-72
4.10 結語.......................................................................................................... 4-75

Chapter 5 雲端服務:Web Role 與Worker Role (新章節)

5.1 角色的基本概念......................................................................................... 5-1
5.1.1 客座作業系統(Guest OS) ........................................................ 5-2
5.1.2 運算能量與擴張性....................................................................... 5-3
5.1.3 本機儲存體................................................................................... 5-5
5.1.4 Startup Task .................................................................................. 5-6
5.1.5 終端點通訊埠............................................................................. 5-10
5.1.6 自訂網域名稱............................................................................. 5-12
5.2 Web Role .................................................................................................. 5-13
5.2.1 使用服務定義檔控制Web Role 的網站設定............................. 5-13
5.2.2 在相同的Web Role 掛載多個網站............................................ 5-15
5.2.3 使用Startup Task 組態IIS 元件..................................................5-19
5.2.4 設定Web Role 支援SSL 通訊....................................................5-23
5.3 Worker Role ..............................................................................................5-28
5.4 結語...........................................................................................................5-31

Chapter 6 Windows Azure 網站服務 (新章節)


6.1 Windows Azure 網站服務簡介.................................................................. 6-1
6.2 使用範本建置網站服務............................................................................. 6-3
6.3 建立空白的網站......................................................................................... 6-7
6.4 使用Visual Studio 發行網站..................................................................... 6-9
6.5 使用FTP/GIT 發行網站...........................................................................6-16
6.6 使用TFS 發行網站...................................................................................6-24
6.7 組態與擴展網站........................................................................................6-38
6.7.1 組態網站設定..............................................................................6-38
6.7.2 連結資源.....................................................................................6-42
6.7.3 擴展網站.....................................................................................6-44
6.8 了解Windows Azure Website 服務的運作方式........................................6-47
6.9 結語...........................................................................................................6-49

Chapter 7 Windows Azure 儲存服務 (30%改寫)

7.1 儲存服務概念............................................................................................ 7-1
7.2 Table 儲存服務.......................................................................................... 7-8
7.2.1 認識Table 服務............................................................................ 7-8
7.2.2 使用Table 服務 (1) — 宣告資料結構.......................................7-11
7.2.3 使用Table 服務 (2) — 直接存取Table.....................................7-13
7.2.3 使用Table 服務 (3) — 使用Model 的方式存取Table .............7-18
7.2.4 群組化資料 — PartitionKey .......................................................7-22
7.2.5 Table 服務設計建議....................................................................7-23
7.3 Blob 儲存服務...........................................................................................7-26
7.3.1 認識Blob 儲存服務....................................................................7-26
7.3.2 Blob 儲存服務結構.....................................................................7-28
7.3.3 Blob 儲存服務程式設計............................................................. 7-35
7.3.4 管理Blob 的存取控制................................................................ 7-45
7.3.5 Windows Azure CDN 服務......................................................... 7-48
7.4 Queue 儲存服務....................................................................................... 7-52
7.4.2 佇列應用程式開發..................................................................... 7-56
7.4.3 蘋果有毒 — 佇列處理的重要議題.......................................... 7-57
7.5 Windows Azure Drive............................................................................... 7-58
7.6 儲存服務的核心層次............................................................................... 7-65
7.7 Storage Client Library 2.0......................................................................... 7-73
7.8 結語.......................................................................................................... 7-77

Chapter 8 Windows Azure SQL Database (40%改寫)


8.1 SQL Database ............................................................................................. 8-1
8.2 SQL Database 架構..................................................................................... 8-5
8.2.1 SQL Database 基礎建設............................................................... 8-5
8.2.2 SQL Database 服務供應模型........................................................ 8-9
8.2.3 SQL Database 無法使用的SQL Server 功能.............................. 8-11
8.3 建立與管理SQL Database Server ............................................................ 8-12
8.4 SQL Database Server 的連接與安全性..................................................... 8-23
8.4.1 連接資料庫................................................................................. 8-23
8.4.2 SQL Database 防火牆................................................................. 8-28
8.4.3 SQL Database 的使用者與群組管理.......................................... 8-30
8.5 移轉資料庫.............................................................................................. 8-35
8.5.1 使用指令碼產生精靈移轉資料庫.............................................. 8-36
8.5.2 使用資料匯入匯出精靈移轉資料庫........................................... 8-39
8.5.3 使用SQL Database Migration Wizard 移轉資料庫.................... 8-43
8.6 SQL Database 應用程式開發................................................................... 8-48
8.6.1 使用Console/Windows Form/WPF/本地的ASP.NET應用程式連接SQL Database......... 8-50
8.6.2 使用Windows Azure 應用程式連接 SQL Database .................. 8-52
8.6.3 使用Entity Framework 連接SQL Database ............................... 8-54
8.6.4 SQL Database 連線的設計考量...................................................8-57
8.7 SQL Data Sync ..........................................................................................8-65
8.8 SQL Reporting...........................................................................................8-68
8.9 結語...........................................................................................................8-82

Chapter 9 Windows Azure 身份認證服務 (100%改寫)


9.1 分散式身份認證服務................................................................................. 9-1
9.2 Windows Azure Active Directory ............................................................... 9-3
9.2.1 Access Control Service ................................................................. 9-3
9.2.2 Windows Azure Authentication..................................................... 9-7
9.3 Access Control Service 服務應用程式實作...............................................9-10
9.4 客製化登入的頁面....................................................................................9-26
9.5 結語...........................................................................................................9-33

Chapter 10 Windows Azure Service Bus (80%改寫)


10.1 服務匯流排概念........................................................................................10-1
10.2 WCF 概觀.................................................................................................10-5
10.3 準備環境...................................................................................................10-7
10.4 訊息轉傳架構...........................................................................................10-9
10.5 訊息仲介服務.........................................................................................10-18
10.5.1 Service Bus Queue .....................................................................10-20
10.5.2 Service Bus Topics.....................................................................10-26
10.5.2 REST APIs.................................................................................10-31
10.6 將Service Bus 服務應用程式部署到雲端的注意事項...........................10-32
10.7 結語.........................................................................................................10-34

Chapter 11 Windows Azure Caching Service(新章節)

11.1 分散式快取服務........................................................................................11-1
11.2 快取服務類型...........................................................................................11-5
11.3 快取應用程式設計....................................................................................11-7
11.3.1 準備快取環境..............................................................................11-7
11.3.2 準備快取用戶端......................................................................... 11-9
11.3.3 使用Caching API ......................................................................11-11
11.3.4 使用Shared Caching Service .....................................................11-19
11.4 ASP.NET Cache Providers .......................................................................11-22
11.5 結語.........................................................................................................11-24

Chapter 12 使用開放原始碼技術開發Windows Azure 平台應用程式 (100%改寫)

12.1 Windows Azure 平台與開放原始碼技術................................................. 12-1
12.2 使用Java 開發Windows Azure 應用程式............................................... 12-3
12.3 使用node.js 開發Windows Azure 應用程式..........................................12-12
12.4 使用PHP 開發Windows Azure 應用程式..............................................12-22
12.5 Windows Azure 的開放原始碼資源........................................................12-24
12.6 結語.........................................................................................................12-26

Chapter 13 行動裝置應用的雲端服務開發 (新章節)

13.1 Mobile Service 概觀................................................................................. 13-1
13.2 建立Mobile Service 服務端..................................................................... 13-4
13.3 使用Mobile Service 開發應用程式......................................................... 13-7
13.3.1 整合Windows Store App 應用程式............................................ 13-7
13.3.2 整合Windows Phone 8 應用程式..............................................13-10
13.4 驗證服務.................................................................................................13-15
13.5 資料庫與伺服器端處理..........................................................................13-22
13.5.1 Dynamic Schema 機制...............................................................13-22
13.5.2 伺服器端指令碼........................................................................13-25
13.5.3 排程服務...................................................................................13-30
13.6 通知功能.................................................................................................13-32
13.7 診斷、記錄與擴展..................................................................................13-35
13.8 結語.........................................................................................................13-37

Chapter 14 雲端環境的安全性 (15%改寫)


14.1 烏雲還是白雲?談雲端運算的安全性.....................................................14-1
14.1.1 最頂層-雲端安全協定..............................................................14-3
14.1.2 基礎建設層次(IaaS Security) .................................................14-7
14.1.3 平台服務(PaaS Security) ........................................................14-9
14.1.4 軟體服務(SaaS Security) ......................................................14-12
14.2 Windows Azure 平台安全性...................................................................14-15
14.3 結語.........................................................................................................14-18

Chapter 15 雲端應用程式架構 (新章節)


15.1 雲端環境與架構........................................................................................15-1
15.2 雲端應用程式架構方法............................................................................15-4
15.2.1 選擇正確的運算資源..................................................................15-4
15.2.2 指令與資料流分離:CQRS Pattern ............................................15-5
15.2.3 多租戶架構..................................................................................15-6
15.2.4 高可用度架構..............................................................................15-7
15.2.5 服務間通訊..................................................................................15-9
15.3 架構設計參考範例....................................................................................15-9
15.4 結語.........................................................................................................15-13