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

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

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

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

知曉了這些概念后,接下來(lái)我們就將開(kāi)始真正的Windows Phone 7網(wǎng)絡(luò)編程實(shí)戰(zhàn)之旅。內(nèi)容涉及新浪微博接口的調(diào)用、如何實(shí)現(xiàn)自定義的WCF Services以便和WP7進(jìn)行數(shù)據(jù)交互等。同時(shí)類(lèi)似數(shù)據(jù)綁定、模板等Silverlight的基礎(chǔ)知識(shí)也會(huì)貫穿始終,讓你快速進(jìn)入WP7開(kāi)發(fā)的大門(mén)。