最近有朋友問我:Windows Azure是不是一個微軟官方提供的ASP.NET應用程式虛擬主機?
他的具體理解是這樣的:Windows Azure提供了對ASP.NET應用程式的託管,並且,「雲計算」離我們那麼近,只要把ASP.NET應用程式部署到Window Azure 上,以前的ASP.NET應用程式就變成「雲應用」了!
怎麼說好呢? 這種理解完全是受當今社會混亂的. NET虛擬主機市場逼出來的。 Windows Azure作為Azure Services Platform的一號服務,如果你僅僅只用他來存放你已經過時的ASP.NET應用程式,那簡直是殺雞用牛刀、暴殄天物。
那麼,Windows Azure應該怎麼用? 它到底比一般的虛擬主機牛在哪兒? 那還的從Windows Azure的服務架構說起。
Roles(角色):
先說說角色問題吧,非常重要。 不理解Windows Azure關於Role的概念,是沒辦法懂得微軟煞費苦心的」雲」的。
部署到Windows Azure上的程式扮演著以下兩種角色:Web Role和Worker Role。
Web Role:顧名思義,就是提供Web服務的角色。 簡單地說,Web Role就是ASP.NET Applicantion,是你本地ASP.NET Application的雲端版本! 支援HTTP/HTTPS協定,還能提供WCF服務。
Worker Role:在後臺運行的應用程式。 它可以在後臺訪問任何網路資源、資料來源並進行操作。 它從來不在大庭廣眾前露面(不開放外部訪問介面),它接到命令後會毫無怨言地依次執行(Queue service裡的訊息佇列能引導它的工作),它就像一個默默無聞的無私奉獻者。 可以拿Windows系統服務跟它類比,一旦啟動,一直在後臺運行。 很爽吧? 這個功能值得重視,大夥們看清楚了,這可是一般的虛擬主機無法提供的哦~ 就連Google引以為豪的雲平臺Google App Engine,至今已經更新了許多許多次,也從來沒有考慮過讓一段程式在後臺長期運行!
這個Workder Role頗具有「雲」的概念:一直在雲端悄悄運行,地面上的人看不到它,但卻不能沒有它。
所以,「雲計算」並不是說只要你把「計算」放在「雲」上就可以,而且徹底地讓「計算」在「雲」上運行。 它包括以下幾層含義:在雲上——不需要本機伺服器;雲很大——計算量可以很大;無論在哪裡,一抬頭就是雲——雲平臺上的應用無論在哪裡、使用何種設備都能使用;躲在雲裡——它的計算過程無論有多複雜,地面上的消費者不需要看到它。
Role的附件
Web Role和Worker Role這兩個小朋友也是帶了家屬一起加入到Windows Azure這個大家庭的,它們暫時包括:
把Local Storage作為緩存使用
標準的Event Streams記錄日誌、發出警告
健康報告
呵呵,這些也是普通的虛擬主機無法有的吧? 「雲主機」的功能是非常強大的,配套是非常完善的!
服務定義(Service Definition)
程式生活在Windows Azure這個新環境裡往往會感到納悶,會懷疑人生:我到底是Web Role還是Worker Role呢?
這就需要我們來説明它們了。
Windows Azure使用了一類尾碼.csdef的檔來定義服務。 包括:這個服務到底似乎Web Role還是Worker Role? 使用HTTp還是HTTPS ? 哪裡去找Local Storage這個親家來幫忙? 諸如此類的資訊。
圖片看不清楚? 請點擊這裡查看原圖(大圖)。
服務配置(Service Configuration)
Web Role和Worder Role這兩個小朋友在得到關於職業規劃的答覆後,又產生了對職業生涯方面的疑問:具體應該怎麼做呢?
這就需要用到服務配置了。 顧名思義,就是對具體服務的具體配置了。 我們採用.cscfg為尾碼的檔來保存它們。 它擔當著與ASP.NET中的Web.Config檔類似的任務,且任務更重。
圖片看不清楚? 請點擊這裡查看原圖(大圖)。
好了,說了這麼多,相信讀者已經對Window Azure的服務架構有了一個清晰的瞭解了。 千萬不要再把Windows Azure當作一般的.NET虛擬主機來使了哦~微軟知道後會很受傷的!