Windows Phone 雲應用開發實踐(一)
Windows Azure平台
概述
Windows AzureTM是一個雲服務操作系統,為Windows Azure 平台提供開發、服務托管和服務管理環境。Windows Azure通過微軟的數據中心為開發人員提供以按需的計算能力和存儲能力去托管、擴展和管理互聯網上的應用程序。
Windows Azure平台是微軟數據中心托管的雲服務平台,提供可高度擴展的處理和存儲功能、關系數據服務和可用於構建Windows Phone應用程序的高級數據訂閱。Windows Azure 是一個可擴展的平台,它支持多種語言並且和你現有的內部部署環境集成在一起。在Windows Azure上創建應用程序和服務, 開發人員可以利用他們現有的Microsoft Visual Studio®專長。同時,Windows Azure支持流行的標准、協議和語言,包括SOAP、REST、XML、Java、PHP和Ruby。
有關構建使用Windows Azure中雲服務的手機應用程序的資源,請下載Windows Azure for Windows Phone工具包。工具包中包括用於Windows Phone和Windows Azure的Visual Studio項目模板、為在手機上使用而優化的類庫、示例應用程序和文檔。下載地址: http://watwp.codeplex.com/ 。
要運行工具包中的項目模板和示例解決方案必須安裝下列組件:
- Microsoft Visual Studio 2010 Professional (or higher) or both Microsoft Visual Web Developer 2010 Express and Microsoft Visual Studio 2010 Express for Windows Phone
- Microsoft ASP.NET MVC 3
- Windows Phone SDK 7.1 Release Candidate
- Silverlight for Windows Phone Toolkit
- Internet Information Services 7 (IIS7)
- Windows Azure SDK for .NET – November 2011
- Windows Identity Foundation Runtime
- Microsoft SQL Server 2008 R2 Express (or higher)
- Entity Framework 4.1 Code First
- Internet Explorer 9 (or any other modern Web browser supporting HTML5)
注意:
工具包中包含配置向導,配置向導檢查和安裝以上列出的組件。導航至工具包安裝的根目錄,雙擊Setup.cmd即可啟動配置向導。選擇"Install All"安裝所需的組件。
圖 啟動配置工具Setup.cmd
注意:
此工具包依賴於Windows Azure、Silverlight for Windows Phone和ASP.NET MVC 3的項目類型。因此運行示例的解決方案和使用工具包中的項目模板,需要安裝Visual Studio 2010 Professional或者更高版本的Visual Studio。對於很多開發者而言可能只安裝了Microsoft Visual Studio 2010 Express for Windows Phone,那么還需要Microsoft Visual Web Developer 2010 Express方可使用工具包中的項目模板。
Windows Azure
Windows Azure是一個雲計算平台,可以讓你在雲中運行的應用程序和數據存儲。而不必擔心底層的基礎設施建設和管理操作系統,你可以簡單地構建應用程序並將其部署到Windows Azure。Windows Azure為開發人員提供按需計算、存儲,網絡、內容交付能力。
SQL Azure數據庫
微軟SQL Azure數據庫是基於SQL Server技術構建高度可用和可擴展的雲數據庫服務。SQL Azure的高可用性和容錯功能是內置的,開發人員不需考慮如何配置和維護數據庫。
與本地SQL Serve類似,SQL Azure公開表格格式數據流(TDS)接口以提供基於Transact-SQL的數據庫訪問。因為Windows Phone應用程序平台不支持TDS協議,因此在Windows Phone應用程序中必須使用Web服務來存儲和檢索SQL Azure數據庫中的數據。
Windows Azure Marketplace DataMarket
Windows Azure Marketplace DataMarket是一個數據信息商城,它簡化了所有類型數據的發布和使用。通過DataMarket,開發人員可以發現、預覽、購買和管理高級數據訂閱。
DataMarket使用OData協議傳輸數據DataMarket OData源在數據集中提供基於REST的API,簡化了開發的難度。Windows Phone應用程序使用Windows Phone的OData客戶端庫獲取DataMarket的數據。OData是用於查詢和更新數據的Web協議,在后面的小節中將專門介紹Windows Phone的OData開發。
DataMarket數據集有兩種類型:支持靈活查詢的數據集和支持固定查詢的數據集。靈活查詢數據集支持更廣泛的基於REST的查詢。固定查詢數據集僅支持固定數量的查詢,它提供了C#的客戶端庫以幫助客戶端應用程序使用數據。
架構圖
本節的重點內容是Windows Azure工具包為Windows Phone提供服務和代理的概述。
- Windows Azure存儲的代理和服務
針對Windows Azure存儲服務的每一個請求必須通過身份驗證。為了避免身份驗證信息(存儲帳戶名和密鑰)存儲在您的手機客戶端應用程序,Windows Azure工具包提供安全的方式使用Windows Azure存儲服務,確保Windows Azure存儲的帳戶信息在Web托管這些服務中是安全的。
Azure表和隊列代理是HTTP處理程序,請求轉發到真正的Windows Azure存儲服務。如果代理確定請求的權限有效,代理將簽署請求並轉發給真正的Windows Azure存儲服務,然后將Windows Azure存儲服務的響應轉發給客戶端。
共享訪問簽名服務(Shared Access Signature service)是WCF REST服務,提供containers和 blobs共享訪問簽名(Shared Access Signatures,簡稱SAS)。一旦手機客戶端收到的SAS,它可以使用它來執行請求的Blob服務的REST API。
- SQL Azure的OData服務
在SQL Azure OData服務是使用Entity Framework 4.1的SQL Azure(或SQL Server)上的WCF數據服務。 目前這項服務的版本,除了支持讀操作,還增加了一個安全層來管理認證/授權。
圖 SQL Azure的Odata服務
- 推送通知
在Windows Phone微軟的推送通知服務提供可使第三方開的消息推送通道,發送從Web服務到Windows Phone應用程序的數據通知。Windows Azure工具包提供增強的MPN(Microsoft Push Notification)服務:
- 1. 在MPN服務中注冊Windows Phone應用程序。Windows Phone應用程序開通MPN服務的特定通道。MPN的服務器創建與特定通道對應的訂閱,所以在該端點收到的通知將被轉發到特定的WP設備和具體的WP應用。
- 2. 使用工具包的Web角色注冊Windows Phone客戶端:Windows Phone應用程序調用Web角色的SamplePushNotificationService注冊成為MPN服務的訂閱終端。
- 3. Windows Azure工具包的雲服務發送通知請求至MPN:雲服務以特定的xml格式向MPN服務發送HTTP POST請求,注冊接收推送通知的Windows Phone設備。
- 4. MPN的服務發送通知至Windows Phone:MPN處理通知請求,並將其推送至Windows Phone設備。Windows Phone設備接收到推送的客戶端發送來的通知后,將通知路由至Shell。如果應用程序沒有運行,Shell將更新應用程序的Tile(磁貼)或者顯示Toast通知。如果應用程序處於運行狀態,Shell將發送通知至正在運行的應用程序。
當從門戶網站發送Tile(磁貼)或Toast通知,通知全文被儲存在一個Azure隊列或在SQL Azure數據庫表,當手機啟動應用程序,並且應用程序推送通知選項被選中,那么將輪詢此隊列或數據庫表,將該用戶的所有信息提取顯示。
圖 推送通知
- ACS身份驗證
Windows Azure訪問控制服務(Windows Azure Access Control Service ,簡稱ACS)允許應用程序外包認證,例如使用Windows Live ID、谷歌、雅虎等賬戶的身份認證。由ACS提供簡單的Web令牌,並以此令牌為每個發送給服務的HTTP請求署名。由Web服務檢查此令牌的有效性,並授權訪問Windows Azure存儲或SQL Azure。
圖 ACS身份驗證
- 成員資格
ASP.NET成員資格允許開發者驗證和甘栗Web應用程序的用戶信息,提供了用於驗證用戶地憑據,創建和修改會員用戶,以及管理比如密碼和電子郵件地址之類的用戶設置的功能。ASP.NET成員資格,主要用於使用ASP.NET窗體身份驗證,但可以在運行ASP.NET應用程序的任何設置中使用。
當Windows Phone應用程序作為身份驗證服務使用ASP.NET的成員資格,必須創建Web角色,方可訪問Web角色部署的服務。ASP.NET成員為Windows Phone應用程序的請求提供授權,Web服務檢查授權的有效性,並提供訪問Windows Azure存儲和SQL Azure的數據服務。
圖 成員資格
- 管理門戶
所有Windows Phone雲應用程序的管理是綁定於管理門戶的,管理門戶提供管理Windows Azure的Blob、Containers,以及Windows Azure 隊列、表的服務,還有微軟推送通知和蘋果推送通知的服務。
圖 管理門戶
動手實踐——創建Windows Phone雲應用
本節介紹如何使用Windows Azure工具包中的項目模板創建Windows Phone雲應用。
- 以管理員身份Visual Studio (這是運行Windows Azure項目的必要條件)
- 在"文件"菜單上,指向"新建" ,然后單擊"項目"。
- 在"已安裝的模板新建項目"對話框左側的列表中,選擇"Visual C#"節點下的"Cloud",選擇"Windows Phone Cloud "模板。
圖 新建項目
- 在新的Windows Phone雲應用項目 對話框中,選擇存儲選項,至少選擇一個Windows Azure存儲或SQL Azure數據庫選項。注意注意
注意:
Windows Azure Storage是項目模板的默認選擇,如果只選擇SQL Azure數據庫,那么信息將只存儲在SQL Azure數據庫。
圖 數據存儲服務的選項
- 單擊"下一步 "移動到向導的下一個步驟。
- 如果"Windows Azure存儲"選項被選中,那些需要提供您的Windows Azure存儲帳戶信息(用戶名和密鑰)。
圖 Windows Azure存儲選項
- 單擊" 下一步 "移動到向導的下一個步驟。
- 如果"SQL Azure數據庫"的選項被選中,那么需要提供您的SQL Azure數據庫服務器的信息(服務器名、用戶名和密碼)。
圖 SQL Azure數據庫選項
注意:
如果你想使用本地SQL Server實例,而不是SQL Azure數據庫,請選中"使用本地SQL Server實例"選項,並選擇列表中的SQL Server實例。
- 單擊" 下一步 "移動到向導的下一個步驟。
- 對於推送通知服務選項,選擇是否要包括推送通知服務支持的Windows Phone或者Apple。
圖 推送通知選項
注意:
如果蘋果推送通知服務(APN)支持選項被選中時,會出現一個對話窗口顯示本地計算機上安裝的證書列表。選擇使用的APN證書身份的證書,然后單擊確定。創建和安裝特定的IOS應用程序的蘋果推送通知證書,你需要先注冊Apple開發者網站上注冊,獲得並安裝SSL證書。
圖 SSL證書
圖 支持Apple推送通知服務的選項
- 單擊"下一步"移動到向導的下一個步驟。
- 要么選擇要么ASP.NET成員(默認),要么選擇Windows Azure 訪問控制服務。
.圖 管理用戶身份認證
如果Windows Azure的訪問控制服務(ACS)的選項被選中,您需要提供您的ACS服務的命名空間和管理的密鑰。
圖 Windows Azure的訪問控制服務(ACS)的選項
點擊確定完成在Visual Studio中創建Windows Phone雲應用的項目。
打開創建的解決方案,可以看到解決方案名稱為"WPCloudApp1"包含以下項目:
- WPCloudApp1:具有Web角色的Windows Azure的項目。
- WPCloudApp1.Phone:Windows Phone的Silverlight項目,其中包含示例應用程序演示如何接收推送通知和使用Windows Azure表、Blob和隊列。
- WPCloudApp1.Web:具有Web角色的ASP.NET MVC 3個項目,包含該工具包的服務和管理頁面。
注意:
項目名稱取決於您在"新建項目"對話框中鍵入的名稱。
圖 解決方案