1. 程式人生 > >Windows Azure Platform (六) Windows Azure應用程式執行環境

Windows Azure Platform (六) Windows Azure應用程式執行環境

Windows Azure應用程式執行環境

Windows Azure雲端計算平臺是提供PaaS(平臺即服務)的,在Windows Azure平臺上提供了三種不同的應用程式角色

1.Web Role

Web Role是已經安裝好IIS 7.0執行環境的Windows Server 2008 x64作業系統,開發人員可以利用Web Role來部署HTTP的應用程式,包括ASP.NET,PHP(FastCGI),JSP或者是基於HTTP的WCF應用程式等的Web應用程式。新版本的Web Role中可支援Full IIS模式,即開發人員可通過服務組態檔在同一個Web Role中設定多個網站或單一網站(Site)內多個虛擬目錄(Virtual Directory),更擴大了Web Role的應用彈性。

2.Worker Role

Worker Role可以簡單理解成Windows 上的Windows Service服務,它是一個無使用者介面的應用程式角色,默默地在後臺執行(我個人感覺更類似於Timr_Tick函式),開發人員可以利用Worker Role來處理不需要使用者介面的大量計算。

Web Role可以通過Queue的方式向Woker Role傳送一串訊息,讓Work Role執行使用者自己需要的邏輯。

為什麼微軟要有Worker Role?它的好處在哪裡?在這裡我舉個例子您就能明白,比如我們有一個資訊管理系統,需要上傳Excel文件來進行解析和處理,從軟體設計的角度來說有2種方法來解決。

a)在ASP.NET應用程式裡新建個upload control,在upload control裡面寫函式:一旦Excel檔案上傳完畢,則在.cs檔案執行對於Excel的處理工作。但這樣會有一個缺點,如果Excel檔案裡包含的內容非常大的話,需要時間來處理這些內容,所以前臺的ASP.NET的頁面會停滯或者無響應。雖然我們也可以通過增加progressbar或者loading圖片來增強使用者的體驗,但是從軟體設計上來說不是最好的。

b)前端還是用原來的處理方式,使用upload control。伺服器端增加一個Windows Service,時序的查詢某一個資料夾,一旦發現前端頁面上傳了一個Excel檔案,則Windows Service執行處理Excel的工作。這樣前端的頁面會及時的響應並且得到更好的使用者體驗。但是這還是有一個缺陷,前端的頁面和windows service是一對一的關係,如果附件上傳的數量很大的話會出現Windows Service來不及處理的情況。

有了Worker Role,我們可以讓一個ASP.NET頁面後端有多個Worker Role來進行分散式的計算,是一對多的關係,能夠有效的利用雲上的計算資源,Worker Role可以處理高負載的資料訪問。

3.VM Role

VM Role微軟為了解決IaaS層次(基礎設施即服務)而新增的程式角色。Web Role和Worker Role是屬於PaaS的範疇,預裝了Windows Server 2008 R2的作業系統。而VM Role允許使用者使用Hyper-V自己安裝作業系統和應用程式再上傳到Windows Azure雲環境。這對企業在轉移應用程式到雲端提供了非常大的彈性的支援,使用者可以使用Hyper-V在VHD安裝自己需要的第三方應用程式並且上傳到Windows Azure進行託管。

不論是Web Role,Worker Role還是VM Role,都可以設定一個以上的執行個體(instance),每個執行個體都是獨立的虛擬機器,Windows Azure Fabric Controller中的Load Balancer(平衡負載器)會自動分配負載到不同的instance中。也因為如此,不論是執行在Web Role上的Web應用程式,或是執行在Worker的服務應用程式,都要考慮可能的跨實體(cross instance)以及不同實體通訊(inter-role or inter-instance communication)的設計。