加入RUN!PC粉絲團
最近新增的精選文章
 
最多人點閱的精選文章
 
 
精選文章 - 開發技術
分享到Plurk
分享到FaceBook
 
Visual Studio 2010 ─ 技術核心(3)
邁向雲端之路
文/李智樺

Microsoft Visual Studio 2010中有一整組完整的專案開發,及離線模擬的作業系統,可讓雲端開發。本文要藉著開發一個簡單的雲端程式,然後在過程中為大家一一介紹各個開發步驟的內容及意義。

Microsoft Windows Azure是微軟在雲端的作業系統,它有著全新的程式模式(Programming Model)及資料模式(Data Model),這對程式設計人員而言,勢必又要重新開始學習的路程,那種必須拋開原有觀念,再去追究新東西的思維過程,對寫程式的人而言,真是酸甜苦辣鹹五味雜陳的感受。這一點微軟的設計團隊知道,因此在Microsoft Visual Studio 2010(以下簡稱VS2010)中有一整組完整的專案開發,及離線模擬的作業系統,供熟悉Visual Studio的程式設計人員使用,相信可以有效的縮短學習的過程。(圖1)

圖1 顯示Windows Azure的Programming Model及Data Model。



程式模式(Programming Model)
有2種角色可以選擇,Web Role是具有使用者介面的角色(例如ASP.NET的Web Application),或是Worker Role是專作背景執行工作的程式(例如Window服務;有一般在桌上型電腦的Windows Services的味道)。

圖2是運用VS2010開發一個全新的雲端服務時的第一個選項,程式設計人員可以在這個地方選擇Web Role(ASP.NET Web Role、ASP.NET MVC2 Web Role、WCF服務Web Role、CGI Web Role)或是Worker Role。首先在左側點選角色,在視窗中間的箭頭決定選擇或取消。

圖2 開發雲端程式可選擇的專案角色。



資料模式(Data Model)
Windows Azure為了讓雲端具有最簡單的存取功能,特別設計了一組全新的資料模式(Data Model),包括了:
●第一類 Blob(Binary Large Object):供儲存大型數據(例如圖檔、MP3…等,最大可達50GB)。
●第二類 Table:供儲存可查詢的結構化數據。
●第三類 Queue,是為了服務的非同步作業所提供的暫時訊息的儲存空間。
●第四類 Windows Azure Driver:建置在Page Blob中的Virtual Hard Drive,提供與一般傳統程式相容的檔案讀寫功能。


Windows Azure的部署過程
我們拿一個 HelloWorld的範例來完整的說明一下Windows Azure的部署過程,首先還是要先列出寫雲端程式所必要的前置軟體需求,再一一設定必要的項目屬性。


必要的前置要求

●Visual Studio 2010
●Windows Azure Tools for Microsoft Visual Studio
●Windows Azure Account


創建雲端程式專案

1.【開始→所有程式→Microsoft Visual Studio 2010】
在Microsoft Visual Studio 2010圖示中點按右鍵,選擇【以管理員身份執行】,使用管理員核准模式開啟VS2010。

2.【檔案→新建→專案】
在Templates中挑選Cloud,此時顯示表格的中間格會出現Windows Azure Cloud Service點選它,然後在下方的專案名稱欄輸入HelloWorld(預設為CloudService),位址預設為使用者的[Visual Studio 2010\projects],確定之後完成設定。

3.【角色(Role)→ASP.NET Web Role→點向右選擇鍵】
因為需要在畫面上顯示訊息,因此挑選ASP.NET Web Role的角色,然後按向右選擇鍵將它放入右側的視窗中。(圖3)

圖3 角色選項。


4.【點確定(OK)鍵→VS2010開始建立專案】
VS2010預設建立一個CloudService方案,包含一個CloudService專案內含所有的設定資訊,及我們所選擇Web Role角色專案。(圖4)

圖4 方案總管。


5.【使用者介面→Default.aspx】(圖5)

圖5 HelloWorld範例的使用者介面。


6.【離線執行→按F5】
很快的就得到畫面的顯示結果(圖6),因為這是離線的開發模式,在運用Visual Studio開發雲端CloudService的專案程式時,平常我們習慣按F5的執行方式將轉變成離線的模擬,因此在第一次按F5執行程式的時候,會慢上許多,因為Visual Studio會負責檢查Development Fabric Controller及Development Storage Controller是否已經啟動了,如果沒有的話;將幫我們啟動這二個模擬程式(它們是以Windows Service的方式啟動,因此若沒有刻意去關閉它們,第二次再執行時就可以省略掉這個步驟,也就會快上許多了)。

圖6 HelloWorld範例的執行結果。


7.【開始Publish→在CloudService專案上按右鍵選擇出版】
請務必在雲端專案上按右鍵,並選擇Publish選項(這個動作才會觸發Visual Studio更新要上傳的資料),上傳的資料為:一個ServicePackage檔案,及一個Cloud Service Configuration檔案。(圖7)

圖7 HelloWorld準備上傳的ServicePackage。


此時最可能跳出來的畫面是Windows Azure的SignIn畫面(如果在這台機器上你尚未登入過Windows Live網站的話);透過SignIn後就會進入Windows Azure的開發者網站了。(圖8)

圖8 進入開發者網站的首頁。



部署程式上雲端前,必須先了解的事
針對開發人員而言,建議測試後即刪除專案,讓專案存活在自己的Visual Studio方案中,由Team Foundation在本地端負責版本控管,千萬別讓不使用的程式閒置在雲端。

8.【點選專案名稱→進入】(圖9)

圖9 進入Storage Account及Hosted Services的選擇畫面。


進入Windows Azure程式專案後你有2種類型可以選擇,選擇Hosted Services是開發服務程式(Services)的選項,也就是開發Web Role或Worker Role的程式;另一個是選擇開發儲存體的程式,也就是針對Blob、Table、Queue及Drive的程式開發。

在HelloWorld這個範例下,是屬於Web Role有使用者介面的應用程式,所以應該要選擇Hosted Services。針對每一個服務(service)都可以輸入這個服務的標題及它的說明,如圖10。

圖10 專案要求輸入服務的標題及描述說明。


9.【點選OK→進入設定服務的URL及選擇Region】
選擇Hosted Services即進入圖11畫面,要求你輸入服務的名稱,以便組成服務的URL字串(部署完成後即成為該服務的呼叫URL),一旁有一個Check Availability的按鈕,是用來檢查名稱是否有重複時用。接下來有一個喜好(affinity group)位置的設定,意思是說你可以選擇部署的區間位置,目的是讓你的相關服務能夠盡可能的集中在一起,這樣可以提升彼此呼叫時的效率。這一點不難想像,如果你的幾個相關服務都在不同的Application Domain中跟在相同Domain中,彼此呼叫起來效率當然不同了!

圖11 輸入URL第一個區域碼。


10.【點選Create→進入Staging Development】
Create按鈕會啟動開發網站,替我們建置一個URL實體位置,同時它會要求輸入程式的位置(位置指的是HelloWorld程式的ServicePackage及configuration檔的位置,當然它是壓縮檔的標準格式但有加上加密,是否加密的功能是可以用參數來設定的,設定的地方在系統參數內的_CSPACK_FORCE_NOENCRYPT_,當它的值為True時,為要求加密)。(圖12)

圖12 第一階段Staging Development。


11.【點選啟動部署→啟動Deploy作業】
這是第一個較花時間的一個步驟,圖14是成功部署到第一階段的畫面。圖13的中間部分有2個立體的正方體,其中右邊的是代表第一階段作業:Staging;左邊的是代表正式階段的作業:Production。這是Windows Azure的部署方式,第一階段作業也就是Staging,是設計來供程式人員將程式放置到雲端但尚未對外公開時,卻可以執行的作業方式,目的是提供程式人員進行測試用的。圖14中間這是Prompt的按鈕,點選以後會彈出一個視窗問你是否確定要部署與左側的Deploy的作用相同。

圖13 Staging Development部署成功畫面。



圖14 詢問是否確定要部署的訊息。


12.【部署正式上線→啟動Deploy作業】
此畫面是正式進入Production階段的畫面,中間的四個按鈕的操作與上一個畫面相同,只是它們會正式啟動作業,此時4個按鈕下方則顯示WebRole1的狀態,它有Stop及Ready/Suspend的狀態。我們需要特別注意的是Suspend按鈕,它其實很像更新(Refresh)按鈕一般,每次由Suspend到Ready的狀態改變,程式實際上是重新被創建起來的,並非暫停作業而程式本身的狀態也會完全消失;全新重來的這一點十分重要。(圖15)

圖15 部署完成取得正式的 URL位置。


13.【執行程式,點選RUN按鈕→啟動Production作業】
是當我們按下RUN按鈕正式Production程式,然後得到一個對外公開可執行的URL值,如圖16。(Web Site URL = HTTP://ruddyhelloworlddemo.cloudApp.net/)

圖16 HelloWorld正式production後的維護畫面。



結語
離線模擬的功能是以 Windows Services的方式安裝在作業系統上的,程式設計師在Visual Studio內直接按F5啟動程式時,即會帶起模擬執行緒(Instance)的Development Fabric Controller,以及模擬儲存體的Development Storage Controller。前者是針對Windows Azure的程式模組作離線的模擬,讓程式設計人員可以離線測試自己所寫的程式是否能正常執行,待測試成功後再作部署的動作。這是雲端運算的標準開發方式;而後者則是讓程式設計人員可以對這幾種不同類型的儲存體,進行離線的存取動作十分的實用。

Visual Studio宣告了雲端運算程式的開發方式;完全建立在離線模擬的作業上,這一點加重了專案測試的重要性,也間接的說明了「測試功能」會在未來的程式開發上佔有相當重要的比例,這一點設計人員可以由VS2010龐大的測試功能上體驗出來。