一. 摘要首先圣殿騎士很高興云計算系列能得到大家的關注和支持,這個系列準備了幾個月,終于在今天發(fā)布第一篇了(由于文章太長,拆成了兩篇,這是其中一篇)。在這幾個月中通過不斷的使用和實踐,對云計算總算有了一個較粗淺的認識,所以也希望能夠和大家一起分享。在發(fā)布這篇文章之前也考慮了很久,因為一開始就講概念的話,勢必會得不到很好的效果,畢竟大家都不太熟悉這個新事物。與其“人云亦云”還不如先來一個簡單的實例,所以我就先選擇一個實踐應用來看到底云計算能給我們帶來什么好處,從開發(fā)者角度,隨著這個概念的引入,究竟它需要做哪些改變才是我們最關心的問題。 本篇文章在安排上大致如下:首先回顧前面的基礎知識,這樣大家就可以有一個大概的認識;接著介紹開發(fā)工具,正所謂“工欲善其事,必先利其器”;再接著就是開發(fā)第一個簡單程序,通過這個簡單程序來看一下其開發(fā)過程;開發(fā)完畢之后就需要部署,在講部署之前我們必須要有賬戶來完成此操作,所以緊接著就依次講解賬戶申請和部署流程;大家一直在用程序+數(shù)據(jù)庫模式來開發(fā)我們的應用,所以接下來我們就講SQL AZURE和經(jīng)典的程序+數(shù)據(jù)庫模式,這樣大家就可以避免生疏感,從而使理解也變得更加容易一些。通過這篇文章,我們對云計算有了一個較清晰的認識,了解了它究竟是什么、究竟能做什么以及如何做。如果大家清楚了這些問題,也就達到了本篇預期的效果,同時也為系列后面的文章打下了基石,所以希望對大家能有所幫助。 二. 本文提綱
三. 云計算基礎回顧在前面幾篇文章中,我們講了很多概念,那么這里就簡單回顧一下(更多細節(jié)看前面幾篇文章): 一,行業(yè)發(fā)展趨勢縱觀軟件行業(yè)的發(fā)展過程與趨勢可以看出一共經(jīng)歷了以下幾個階段:
那么上面的幾個階段也可以簡單的總結為三個發(fā)展趨勢,這也是現(xiàn)在云計算體現(xiàn)的三大特點:
二,云計算的優(yōu)勢和劣勢任何一件事物都有利弊之分,云計算更不例外了,所以我們不能對它一概而論,只有充分的認識到這些優(yōu)勢和劣勢之后才能更好的做出決斷。也許你可以稱它是一場比WEB 2.0還要巨大的革命;也許你也可以稱它和當初AJAX一樣,屬概念炒作、新瓶裝舊酒;不管如何,沒有深入虎穴焉得虎子,那么下面我們就具體分析一下它到底有哪些優(yōu)勢和劣勢。 優(yōu)勢或值得應用的方面:
劣勢或需要改進的方面:
三,目前的現(xiàn)狀了解了云計算的基本概念以后,接下來要做的就是如何選擇合適的云供應商,畢竟我們不是亞馬遜、Google、微軟、阿里巴巴、浪潮等專注于云計算研發(fā)的企業(yè),所以如果我們使用云計算,必須得選擇一個合適的云廠商來為我們服務。 圖1 上面的圖中包含了前期的幾家云計算廠家,其實總體來說現(xiàn)在云計算廠商可謂星羅棋布,不光是國外的亞馬遜、谷歌、IBM、微軟、甲骨文、思科、惠普、Salesforce、VMware等大型企業(yè),還包括國內的阿里巴巴、中移動、浪潮等也加入到了這個競技場。 四,微軟的云平臺雖然我們不能親自開發(fā)一個云平臺,但是我們可以使用并體驗云平臺給我們帶來的好處,在這個過程中我們也可以通過具體使用、深入分析、再次使用、回歸總結的方式來逐步深化我們的認知程度,這樣循環(huán)往復以后就從中獲得預期的收益。我們這個系列目前主要研究微軟的云平臺——Windows Azure Platform,它是微軟完整的云計算平臺,目前包含了如下三大部分(詳細介紹見云計算之旅4—Windows Azure總覽 ): 圖2 四. 開發(fā)工具 俗話說“工欲善其事,必先利其器”。我們在開發(fā)一個任何一個程序之前都需要了解開發(fā)它的工具,使用了開發(fā)工具之后總能起到事半功倍的效果,這一點是無需置疑的,畢竟命令行、匯編、記事本的方式是需要大量的時間和精力,而且調試和異常跟蹤等也極為困難。針對微軟的windows azure的開發(fā)工具很簡單,我們在安裝了VS2008或VS2010、SQL Server 2005/2008/2008 R2后,再安裝一個擴展的工具包就可以進行云應用的開發(fā)了,這個擴展工具包是:Windows Azure Tools for Microsoft Visual Studio 1.2 (里面包含Windows Azure SDK和Visual Studio集成),其下載的地址是: 這個版本是2010年6月發(fā)布,其中包括Windows Azure Tools + SDK,所以安裝了它以后就不需要再安裝其他的軟件了,其中功能包括:
其實使用VS 2008 和VS2010開發(fā)云程序的過程沒有本質上的區(qū)別,主要是VS 2010提供了云應用的開發(fā)、調試、部署、管理的整套工具,如開發(fā)云計算程序模式、開發(fā)云計算的項目模板、離線測試云計算項目、云計算部署等等功能的支持,這些功能都縮短了云應用的開發(fā)周期,在很大程度上提高了開發(fā)效率,因此我們在很多時候會使用VS 2010來開發(fā)云應用,當然為了照顧部分使用VS 2008的朋友,我們也會盡量提供兩個版本。 五. 第一個簡單程序步驟一:創(chuàng)建云項目正所謂“千里之行始于足下”。安裝了開發(fā)工具之后,我們就來創(chuàng)建第一個應用程序,由于我安裝的是windows 7操作系統(tǒng),所以用管理員權限打開Visual Studio 2008,如果是XP等操作系統(tǒng),直接運行Visual Studio 2008即可,因為之前我們已經(jīng)安裝了Windows Azure Tools for Microsoft Visual Studio 1.2,所以你就會看到下圖模板中多了一個Cloud的選項(圖中標記1),點擊Cloud選項,選擇Windows Azure Cloud Service模板(圖中標記2),命名項目為FirstCloudApp,點擊OK按鈕創(chuàng)建我們的項目: 圖3 在彈出窗口出現(xiàn)后,按照下圖所示,分別點擊標簽1的ASP.NET Web Role和標簽2的“>”按鈕。該步驟會在右邊窗口中生成一個新的WebRole項,此時你可以點擊標簽4的筆形圖標,然后改變該Web Role名字,同時你也可以點擊標簽5的小叉刪除新建的項,操作完之后點擊OK按鈕即可。 圖4 步驟二:觀察生成的云項目項目結構如下圖所示: 圖5 由項目結構圖我們可以看到云項目和普通的ASP.Net項目的差別,ASP.Net Web Role云項目會產(chǎn)生一個云應用的項目和一個ASP.Net的項目,云應用項目對ASP.Net項目進行引用,同時云應用項目中還包含服務程序文件和服務配置文件,這兩個文件在配置、運行和部署云應用時將要用到,沒有這兩個文件,也就沒有我們的云程序。大家也可以通過這些配置文件來具體定制化我們的應用,在下一次課程中,我們也會詳細講解這個程序文件的內部原理以及注意事項。 編輯Default.aspx頁面,添加一些簡單的測試信息,代碼如: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebRole1._Default" %> 步驟三:解決運行錯誤問題按F5鍵開始調試程序。由于沒有安裝SQL Server Express,所以會看到下圖所示的錯誤信息 圖6 那么我們可以使用VS 2010的安裝文件添加安裝來解決這個問題,同時你也可以通過命令行的方式來解決,在開始菜單中點擊Windows Azure SDK Command Prompt進入命令行窗口,如下圖: 圖7 在如下的命令行窗口輸入DSInti /sqlInstance:.(意思是:“DSInit /sqlinstance:你的sql instance名字”,我們這里本機,所以是.) 圖8 然后點擊下面的OK按鈕,重新運行程序即可。 圖9 步驟四:再次運行程序,得到正確結果再次運行程序,你將會看到下面的頁面,這表示你創(chuàng)建的windows azure的程序可以正常運行并得到了你想要的結果,如果你比較細心,你會發(fā)現(xiàn)它是借用本地的IIS來Host的,地址是:http://127.0.0.1:81/Default.aspx: 圖10 經(jīng)過上面的步驟,我們已經(jīng)創(chuàng)建了第一個云程序,接下來要做的就是部署到所謂的云上面去了。 步驟五:觀察本地云模擬器如果你足夠細心的話,會發(fā)現(xiàn)任務欄里多了一個程序的圖標,見下圖1標記: 圖11 這個就是dev Fabric和dev Storage的管理器。也就是傳說中的云端模擬器,這個模擬器可以讓我們在本地測試自己的程序是否能夠在Windows Azure Platform上正常運行。一般情況下如果在本地測試通過的程序,上傳到Windows Azure Platform上就可以正常運行,但是也有一些特殊的情況,我們在后面會講到。點擊上圖的2標記,就進入下圖的dev Fabric管理器: 圖12 從上圖的dev Fabric管理器可以看到我們當前運行的程序以及執(zhí)行的狀態(tài),這個可以幫助我們進行跟蹤和調試。 點擊圖11的3標記,就進入下圖的dev Storage管理器,Windows Azure為應用程序提供了Blobs,Tables和Queues三種存儲機制,你可以在這個界面來開啟或者關閉某種存儲機制。 圖13 對于上面這些功能,我們在這篇不會做過多的探討,以后會在專門的文章中做詳細介紹。 六. 賬戶申請在部署之前,我們先要有一個賬戶,如果沒有賬戶需要從http://www.microsoft.com/windowsazure/offers/這里進行注冊購買,具體如下頁面 圖14 購買了并激活以后就可以通過https://windows./Cloud/Provisioning/Default.aspx登陸 圖15 登陸成功以后,你會看到如下的主界面,在這個界面里面,你可以創(chuàng)建、管理你的Windows Azure、SQL Azure和AppFabric。 圖16 七. 部署步驟一:發(fā)布項目開發(fā)完一個應用程序并在本地完成測試之后,就可以部署到云上去了,我們在Visual Studio的Solution Explorer窗口中,右擊FirstCloudApp項目,點擊Publish選項,如下圖: 圖17 這里有兩個選擇方案發(fā)布你的項目,第一就是創(chuàng)建云程序包,手動上傳;第二就是設置信息自動上傳。由于下篇我們會分析其內部的原理,所以我們這里就選擇第一種方式,如下圖: 圖18 點擊OK按鈕,等待Visual Studio創(chuàng)建壓縮包并自動彈出壓縮包的窗口。壓縮包和配置文件如下圖: 圖19 步驟二:Windows Azure管理站點前面我們輸入了Live ID和密碼登陸到了Windows Azure管理站點,大家看到該網(wǎng)頁列出了我們能夠使用的Windows Azure服務,當然由于購買的服務不同,您的項目數(shù)量也會有所不同,這里我們需要創(chuàng)建一個服務來Host我們的程序。你可以點擊下圖標記1或者標記2來創(chuàng)建我們的服務: 圖20 步驟三:創(chuàng)建Hosted Services由于是第一次部署,我們需要先創(chuàng)建一個新的Hosted Services來Host我們的程序。點擊New Service鏈接: 圖21 彈出如下頁面,填入Hosted Services的標簽名并輸入該Hosted Services的描述,然后點擊Next按鈕: 圖22 輸入你想要的域名,然后點擊Check Availability按鈕檢查該域名是否可用,接下來就是設置服務器的地理位置,由于我現(xiàn)在處在新加坡,所以選擇東南亞,如果在中國大陸,則可以選擇東亞。最后點擊Create按鈕完成創(chuàng)建: 圖23 步驟四:上傳并部署程序現(xiàn)在Hosted Services已經(jīng)創(chuàng)建完成。我們能夠在網(wǎng)頁上看到我們剛剛創(chuàng)建的Hosted Service,如下圖,標記1可以修改程序的描述。標記2可以刪除我們剛才創(chuàng)建的服務。標記3和4則是我們剛創(chuàng)建服務的兩個環(huán)境,windows azure在這方面做得很人性化,提供了Staging和Production兩個環(huán)境來部署我們的應用,這個就和我們實際的項目流程比較類似了,也給我們提供了更大的靈活性。標記5則給我們提供了一個很重要的功能,你可以通過證書來保護你的應用程序。 圖24 點擊上圖Staging的Deploy按鈕彈出如下頁面。選擇在步驟一中生成的兩個文件然后上傳。在Application Package一欄中輸入.cspkg文件路徑。在Configuration Settings一欄中輸入.cscfg文件路徑。點擊Deploy: 圖25 步驟五:啟動并測試程序點擊Deploy按鈕之后,看到如下頁面,然后等待一段比較長的時間(時間根據(jù)你項目大小而定): 圖26 直到出現(xiàn)下面的界面,你會看到當前的狀態(tài)為Stopped,這個時候點擊Run按鈕 圖27 你會看到狀態(tài)由Stopped逐漸變?yōu)镮nitializing、Busy和Ready,當狀態(tài)變?yōu)镽eady后,點擊下面的Web Site URL鏈接就可以看到我們剛才修改的網(wǎng)頁了。 圖28 經(jīng)過剛才Staging環(huán)境測試之后,我們就可以點擊上圖中間的轉換按鈕,這個時候Staging環(huán)境中的應用程序就會上傳到Production環(huán)境,然后經(jīng)過前面Staging相同操作,就可以見到如下圖所示界面 圖29 當發(fā)現(xiàn)WebRole1的狀態(tài)為Ready時,我們的Web Role項目就已經(jīng)成功運行了。見下圖: 圖30 然后點擊Web Site URL鏈接,這個時候就可以看到我們期待的頁面了。 圖31 到此為止我們已經(jīng)成功地把第一個云程序發(fā)布到云端了!現(xiàn)在任何能夠訪問Internet的機器都可以通過http://firstcloudapplication./進行訪問。 八. SQL AZURE在瀏覽器輸入https://windows./Cloud/Provisioning/Default.aspx,打開頁面然后輸入了Live ID和密碼登陸到了Windows Azure管理站點(如圖32所示),前面我們創(chuàng)建了一個服務來Host我們的程序,這里我們要介紹另外一個功能——SQL AZURE,點擊頁面的SQL AZURE鏈接 圖32 進入如圖33所示的頁面,可以看到當前的所有數(shù)據(jù)庫和所有操作按鈕,那么我們就簡單對它們進行一些介紹: 標簽1中的Reset Password按鈕可以修改登陸密碼; 標簽2中的Drop Server按鈕是刪除當前SQL AZURE服務; 標簽3中的Databases則是顯示所有的數(shù)據(jù)庫信息,其中包括數(shù)據(jù)庫名、當前大小、最大容量、版本(Web版本有1G和5G兩個容量可供選擇,Business版本支持10G、20G、30G、40G乃至50G的大容量存儲); 標簽4中的Firewall Settings是一個比較重要的功能,可以通過設置具體可由哪些IP訪問,即相當于簡單防火墻的功能。 標簽5中的Connection Strings按鈕是程序鏈接字符串的信息,通過它可以獲取程序使用什么樣的字符串來訪問數(shù)據(jù)庫,一共有ADO.NET和ODBC兩種方式。 標簽6中的Test Connectivity按鈕這個功能可以測試剛才我們創(chuàng)建的數(shù)據(jù)庫是否連接正常。 標簽7中的Create Database按鈕則是我們最常用的功能,使用它來創(chuàng)建我們的數(shù)據(jù)庫。 標簽8中的Drop Database按鈕刪除當前選擇的數(shù)據(jù)庫。 圖33 點擊圖33標簽7中的Create Database按鈕打開圖34所示的界面,我們輸入要創(chuàng)建的數(shù)據(jù)庫名FirstCloudDB,選擇版本類型,然后選擇容量大小之后點擊Create按鈕即可完成創(chuàng)建工作。 圖34 點擊圖33標簽5中的Connection Strings按鈕打開如圖35所示界面,因為我們要在程序或者SQL Server Management Studio R2中使用到鏈接字符串,所以在使用的時候需要從這里查看或者拷貝。 圖35 點擊圖33標簽6中的Test Connectivity按鈕,這個功能可以測試剛才我們創(chuàng)建的數(shù)據(jù)庫是否連接正常,輸入Username和Password,然后點擊Connect按鈕,就可以測試連接是否成功。 圖36 點擊圖33標簽4中的Firewall Settings,打開如圖圖37所示的界面,我們知道這是一個比較重要的功能,可以通過設置具體可由哪些IP訪問,即相當于簡單防火墻的功能。我們先把本機加入到Firewall Settings里面,這樣就可以通過本機的程序或者SQL Server Management Studio R2操作數(shù)據(jù)了。 圖37 當設置了Firewall Settings以后就可以通過管理工具或者程序進行連接了。 在講下面的內容之前,你首先得安裝SQL Server R2版本的數(shù)據(jù)庫,具體下載地址:http://msdn.microsoft.com/en-us/subscriptions/default.aspx 安裝完成之后,我們就可以使用SQL Server Management Studio R2登陸SQL AZURE了,打開SQL Server Management Studio R2,如圖38所示 圖38 登陸成功以后進入如圖39所示的SQL Server Management Studio R2主界面,這個版本和其他版本基本一致,我也不做過多介紹,后面講SQL AZURE會專門進行探討。 圖39 九. 經(jīng)典的程序+數(shù)據(jù)庫模式前面用了較大篇幅介紹了Windows Azure和SQL AZURE的基本使用,那么這里就用一個簡單的實例來看一下經(jīng)典的程序+數(shù)據(jù)庫模式在azure中有哪些改變,首先打開SQL Server Management Studio,登陸到SQL AZURE數(shù)據(jù)庫,通過如下語句建立所需的表和插入所需的數(shù)據(jù)(如圖40所示)。 圖40 創(chuàng)建了數(shù)據(jù)庫以后,然后我們打開前面創(chuàng)建的FirstCloudApp程序,在Default.aspx頁面放置一個Label 控件,這個控件用來呈現(xiàn)從數(shù)據(jù)庫返回的數(shù)據(jù) <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebRole1._Default" %> 在Default.aspx.cs頁面寫一段簡單讀取數(shù)據(jù)庫數(shù)據(jù)的代碼,為了能夠簡單的展示,我沒有對其進行分裝,也沒有引入任何修飾代碼,這樣大家可以更好的理解一些,如果大家看不慣這些代碼,也敬請見諒,后面文章會講解我們自己開發(fā)的ORM框架,AOP對日志、異常、特定植入代碼的處理,IOC對框架和組件解耦的支持以及常用設計模式和SOA service bus等的引入。 namespace WebRole1 編碼完了以后就可以在本地測試了,測試通過以后發(fā)布我們的程序(這個和前面操作類似,所以簡單略過)。由于之前我們已經(jīng)部署了開發(fā)的程序,這個時候只需要更新以前的服務就行。 圖41 點擊圖41中所示的Upgrade按鈕,彈出如下頁面: 圖42 在圖42標簽1中選擇更新類型;在圖42標簽2中選擇程序包;在圖42標簽3中選擇配置文件包;在圖42標簽4中設置操作系統(tǒng),一般我們采用默認配置;在圖42標簽5中填入此次發(fā)布的Label,表明發(fā)布編號;在圖42標簽6中可以設置是全部更新還是特定更新;最后點擊圖42標簽7的Deploy按鈕。 圖43 然后點擊圖43中的Web Site URL的鏈接http://firstcloudapplication./,發(fā)現(xiàn)剛才開發(fā)的程序已經(jīng)成功的部署在云上了。 圖44 現(xiàn)在任何能夠訪問Internet的機器都可以通過http://firstcloudapplication./進行訪問,至此我們就講完了最基本的開發(fā)模式,也為下面深入的探討打下了基礎。 十. 本文總結這篇文章講的概念也不是很多,但是作為基礎篇,也希望大家能引起注意,因為沒有它,我們后面的文章也無從談起。通過這篇文章,我們必須要對云有一個感性和理性的認識。最重要的是要認清它究竟給我們帶來了哪些改變,當然今天的例子也只是云計算的冰山一角,但是我們要養(yǎng)成思考的習慣,比如在此前的傳統(tǒng)做法中,對于一個中小型網(wǎng)站,如果部署的話,我們會租用服務器來托管我們的應用。對于較大型且企業(yè)想自己主導的網(wǎng)站,我們可以自己購置服務器,然后對服務器集群,做好分布式和負載均衡?,F(xiàn)在引入云計算之后,我們開發(fā)完一個網(wǎng)站之后就可以直接把它部署到云上,這樣就可以不用考慮負載均衡等問題,當然為了實現(xiàn)這個還要做很多配置,我們后面會詳細介紹,這樣做了以后大大提高了此應用的靈活性和擴展性,同時也減少了基礎架構的成本和負擔,更為重要的是它能按需使用,這給一些時令和節(jié)假日企業(yè)也帶來了福音。對于安全性以及大型應用沒有在此篇討論的范疇,后面會逐漸涉及。 今天的例子過于淺顯,但是千萬不要把云計算等同于虛擬機或空間租用商,這樣就太暴殄天物了,除了具有Host網(wǎng)站的功能外,還有一些常見的功能,如: 十一.系列進度
代碼下載:FirstCloudApp 配套視頻敬請關注MSDN Webcast官方網(wǎng)站,到時會逐漸更新上去,可能講得不好,也敬請見諒! 另外新建了一個云計算專區(qū)(地址:http://home.cnblogs.com/group/CloudComputing/),大家有什么相關的疑問或話題也可以在里面進行探討,同時也希望各位推選一位組長來帶領大家共同學習,本人自認才疏學淺,無力勝任,所以歡迎廣大愛好者踴躍加入,我們也有理由相信云計算一定會帶來一場軟件行業(yè)的變革!
|
|