教你開發Windows Phone平臺云計算應用
云計算的搞笑故事
中國一留學生去美國打工,當報童,不帶計算器,習慣動作抬頭望天時心算找零。顧客大為驚訝,紛紛掏出計算器驗證,皆無誤,也抬頭望天,驚恐問:云計算?
上面是一個關于云計算的小段子。云計算在2010突然爆發,目前發展勢頭已經是如火如荼,如果不提云計算這個概念老總們都不好說自己是混IT界的。目前最讓大家印象深刻的應該是360的云查殺了,雖然很多用戶不知道云查殺的具體優勢是什么,但是他們感覺云已經逐步走進自己的生活。
微軟云計算Windows Azure概述
目前微軟已經在開發大力推進他們的云計算服務,相對其他參與者對云計算概念的定位,微軟所謂的云計算概念更側重于在互聯網環境中提供高度靈活、高度可擴展和高度可操作的應用平臺。微軟的云計算平臺Windows Azure目前已經初步成型。
Windows Azure上提供與桌面和服務器操作系統一致開發模型和企業級服務,例如提供SQL Services對應SQL Server等,和.NET Services對應BizTalk Server等。這些服務和資源可以直接被運行在Windows Azure上的應用程序調用,或被運行在用戶自主數據中心里的、可訪問互聯網的應用程序所訪問,而無需在單獨部署。微軟的云計算平臺允許用戶以與本地系統一致的模型開發云計算應用系統,或將原有系統的部分或全部遷移到云中。

微軟云計算框架
比如說你需要構建一套客戶關系系統,那么你需要購買SQL Server和Windows 2008之類的軟件!除此之外,一臺部署系統的服務器也是必不可少的,無論是租用還是購買,再加上服務器的維護人員、服務器托管等,都是一筆不菲的開銷。那么采用微軟的云計算服務后,我們可以直接使用微軟Windows Azure的CRM服務,以及SQL Serve和Windows后端支持,客戶可以最大化地對自己的需求進行定制,你只需要關注具體的業務和程序開發,服務器的維護和托管等都將由微軟幫你完成。
在未來的云戰略中,微軟會把Windows、數據庫、Office都放在云里面,大家隨時隨地都可以使用微軟Oficce的產品,以及其他產品。此外,微軟的很多服務比如Windows Live,Onlien Services也都是在云計算方面進行開發。同時會利用很多新的技術,用服務來幫助用戶做決定。現在,很多人上網購物可能會做很多方面事情都已經在微軟云計算考慮的范圍內,涉及我們生活的方方面面。
Windows Phone 7和云計算密不可分
作為微軟移動戰略的重中之重,Windows Phone 7從骨子里就打上了互聯網手機的標簽,它內置的facebook、twitter、Xbox Live等服務無一不需要網絡的支持。目前微軟軟件商店的程序數量已達9000款之多,目前最少有2000款應用需要網絡的支持。這充分說明了移動網絡和后端數據對手機應用的重要支持!

Windows Phone 7和云計算密不可分
除了微軟、IBM、Google等大型巨頭在大力推進云計算外,現在越來越多的國內廠商也在逐步開放API,試圖構建自己的云平臺戰略!
目前開放API的包括我們熟知的新浪微博、阿里巴巴、騰訊、京東、優酷等,甚至一些團購網都在積極開放API,以便構建自己的生態圈來獲得更多和吸引的用戶。這一切都說明云計算服務已經是大勢所趨了。
如今我們已經進入社交的時代,網絡之間的交互已經變得多維化。每個IT企業和開發人員都不是信息的孤島,開放和分享已經成為互聯網新的主題。就在IT巨頭們逐步開放平臺的時候,我們開發人員怎么利用云計算平臺或者開放API來構建基于云端的WP7應用呢!
Windows Phone 7訪問云端數據的方式
WP7有多種獲取數據的方式,除了使用資源文件和獨立存儲將數據保存到手機存儲卡本身外,還可以通過多種方式來從服務器端或者云端獲取數據。

WP7手機獲取數據的方式
這里將云端訪問方式分列為下表所示:
Web Service
:顧名思義就是一個運行在Web上的服務。這個服務通過網絡為我們的程序提供服務方法。類似一個遠程的服務提供者。
比如,一個提供天氣預報的網站需要隨時更新天氣情況,在WEB上掛上一個隨時問訊最新天氣情況的服務。我們的程序就可以從這個服務上獲取到當前最新的天氣信息。
說的簡單點就是遠程信息訪問,專業點就是基于XML并利用SOAP協議實現跨平臺信息傳遞的一種技術。
REST:
即Representational State Transfer表述性狀態轉移。是一種針對網絡應用的設計和開發方式,可以降低開發的復雜性,提高系統的可伸縮性。目前新浪微博、淘寶的接口都有基于REST的數據接口。
POX:
Plain Old XML,對基本的XML標記語言的一種專稱。
JSON:
即 JavaScript Object Natation,它是一種輕量級的數據交換格式,它設計為人類可讀的,但是也很容易通過計算機進行解析。
OData:
OData開放數據協議是微軟針對Google的GData推出的,旨在推廣Web程序數據庫格式標準化的開放數據協議,微軟將 OData 定義為基于 HTTP、AtomPub 和 JSON 的協議,增強各種網頁應用程序之間的數據兼容性,以提供多種應用、服務和數據商店的信息訪問。并且,微軟已經正式推出了 OData SDK,包含了 .NET、Java、PHP、Palm WebOS 和 iPhone 的支持。其中 .Net OData 客戶端基于 Apache 授權開源。微軟多款產品已經支持 OData 包括 SharePoint Server 2010, Excel 2010, Dynamics 等。
SOAP:
簡單對象訪問協議,簡單對象訪問協議(SOAP)是一種輕量的、簡單的、基于 XML 的協議,它被設計成在 WEB 上交換結構化的和固化的信息。 SOAP 可以和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。
在WP7上的Silverlight開發上,微軟給我們提供了多種從Web Service上獲取數據的方式。分別為:
1. HTTP
2. WCF services
3. WCF Data Services (OData services)
4. Windows Azure Services
下面是各種訪問Web Service方式的具體說明:
HTTP
我們可以在WP7上的Silverlight中直接使用System.Net命名空間下的 HttpWebRequest/HttpWebResponse 或 WebClient類,來訪問Web Service或者網絡服務器上的資源。這些類可以提供HTTP協議向網絡訪問發起請求。一般來說,我們使用第三方Web服務,并且服務器響應后返回的數據格式為XML 或 JSON時才考慮使用這些使用HTTP協議的類。
下面是新浪微博的返回最新的20條公共微博接口。數據格式為JSON
http://api.t.sina.com.cn/statuses/public_timeline.json?source=appkey&count=5
你可以通過HTTP類來訪問該資源以獲得相關的數據
WCF Services
WCF是一個建立和訪問Web服務的框架。WCF允許你公開一個類作為Web服務以便和Silverlight進行數據的交互。在Windows Phone的Silverlight應用程序中,你可以使用SLsvcUtil.exe這個工具,或者Visual Studio開發環境中的“Add Service Reference”菜單來生成WCF服務的一個本地代理類。WCF服務支持一系列的網絡協議(包括HTTP和TCP)以及多種數據格式,比如說 SOAP,XML和Atom
WCF Data Services
WCF Data Services,就是以前被稱為ADO.NET Data services的數據訪問框架,該框架允許你從REST格式的資源中操作數據。WCF Data Services用Open Data Protocol的方式來公開數據。除此之外,如果Windows Phone的Silverlight應用程序需要和sharepoint進行交互,sharepoint 2010可以以WCF Data Services的方式公開數據訪問。
WCF Data Services 可以處理所有和HTTP相關的通訊、系列化任務,以及希望將一些數據模式公開為WCF Data Services的實現。這意味著我們的程序可以通過HTTP協議在一個數據服務中執行查詢、刪除、更新、插入等操作,無論是在同一個域中還是跨域操作。目前在微軟的開源網站上已經實現了WP7上的OData功能,相關的類庫可以在http://odata.codeplex.com/releases /view/54698下載。
Windows Azure Storage Services
你可以在WP7應用中使用Windows Azure來存儲和檢索數據,這一點在設備存儲容量有限的情況下尤為重要。 Windows Azure 平臺為 Windows Phone 提供了多種數據存儲方案。Windows Azure storage services為用戶提供了一個可靠持久的云存儲服務,而且還能根據數據增長或者減少的需求進行動態的調整。訪問Windows Azure storage 服務的方式和訪問 web service很是類似。
一旦你知道你應用程序的需求,你就可以找出一些較為優秀的方案來和云計算進行交互。下面是各種場景下推薦的網絡訪問和實現方式:

知曉了這些概念后,接下來我們就將開始真正的Windows Phone 7網絡編程實戰之旅。內容涉及新浪微博接口的調用、如何實現自定義的WCF Services以便和WP7進行數據交互等。同時類似數據綁定、模板等Silverlight的基礎知識也會貫穿始終,讓你快速進入WP7開發的大門。