回答

30
  • Web角色是託管在IIS中的Web應用程序。
  • 輔助角色是可以做一些工作流程(即自動壓縮上傳的圖片,做的東西,只要東西在你的數據庫的變化,從隊列和進程中取得新的消息,你的名字)
  • VM角色託管虛擬機
+10

實際上,Web角色和角色是虛擬機。 –

+0

這是一個非常簡單的答案,很抱歉,他們不是虛擬機......你能想象一下,如果多個Worker角色在單獨的虛擬機中運行在後臺,那麼多層角色的解決方案的成本將會是多少? https://blogs.msdn.microsoft.com/silverlining/2012/06/27/windows-azure-websites-web-roles-and-vms-when-to-use-which/ – Clarence

95

編輯2013年3月3日 - 更新以引用UDP端點,虛擬機和更多的語言

編輯2013年6月6日 - 更新,以反映VM角色停產,並更新到網絡/工作人員角色將OS映像映射到Windows Server 2012

Good link by @Vladimir。稍微澄清一點:所有角色(網絡,工作者)本質上都是Windows Server。 Web和輔助角色幾乎是一樣的:

  • 的Web角色的Windows Server虛擬機與IIS啓用
  • 輔助角色在Windows Server虛擬機與IIS禁用(你可以手動啓用它)
  • VM角色的Windows Server 2008映像您通過Hyper-V在本地構建並上傳到Azure (現在已停止使用,並且截至2013年5月31日不再提供
  • 虛擬機是在Azure中創建的Windows或Linux映像,存儲爲vhd您自己的存儲空間,並對虛擬機角色進行了一些增強,例如:由於vhd位於您自己的存儲帳戶中,因此您可以輕鬆地從vhd創建映像模板,將其複製到新的vhd,甚至將其上傳到VM Depot(僅限Linux)。

要獲得關於如何處理這些角色做題:平臺培訓工具包(下文提到)會給你很多好的想法和樣品,但這裏有一些簡單的使用情況:

  • 您可以運行公開tcp,http,https或udp端點的任何代碼(Web應用程序,SOAP/REST服務等)。您需要考慮無狀態的方式 - 如果您有多個VM實例在運行,則用戶流量將分佈在這些實例中。該平臺培訓套件將向您展示如何使用存儲或緩存來處理此問題。
  • 您可以運行離開隊列或計時器的代碼。也許你有點播任務,如縮略圖生成照片或基於用戶輸入的計算。這些不需要外部可用的端點。您可以將請求推送到一個隊列中,然後運行一個簡單地饋送此隊列的任務(並且您可以在多個實例之間擴展此過程,並且所有實例都使用隊列消息)。
  • 您可以運行.NET,Java,php,python,node,ruby等。您只需要將相應的運行時代碼與您的項目代碼一起分發。所有語言都可以使用REST調用Azure API,並且有多種語言(包括上面提到的那些語言)都有爲您提供幫助的SDK。所有語言SDK都是here,源代碼在github上,here
  • 使用VM角色,您可以安裝和運行非常複雜/耗時的安裝,需要手動干預的安裝以及無法可靠自動化安裝的軟件。在這種情況下,您必須處理操作系統維護。除虛擬機角色外,現在還有虛擬機,提供基於雲的虛擬機構建以及Windows和Linux支持。我建議虛擬機角色虛擬機。

使用Web和Worker角色時,操作系統和相關的修補程序將爲您照顧;您可以構建應用程序的組件,而無需管理VM。

使用VM角色,您可以構建完整的Windows Server映像,向其中添加Azure掛鉤,並將整個VM推入雲中(然後隨時間維護VM映像)。

使用虛擬機,您只需從圖庫中選擇一個OS圖像,該圖像會爲您創建並作爲vhd存儲在BLOB存儲中。然後你可以使用RDP/ssh並設置你喜歡的方式。

戴着建築師的帽子,這是它獲得樂趣和有趣的地方。您可以使用Web角色或輔助角色運行Web服務(並且可以在任何一箇中打開端口);您可以託管Tomcat或其他Web服務器的角色。您可以選擇將網站和服務合併爲一個角色,或者將其分成多個角色以滿足不同的可擴展性需求。

一個好的開始,看看Platform Training Kit並開始穿過練習。

+0

你真的可以公開tcp網絡角色端點?根據smarx他們都必須是HTTP:http://stackoverflow.com/questions/2926737/is-it-possible-to-host-a-wcf-service-in-an-azure-webrole-mvc This使得角色之間的另一個細微差別。 –

+0

我已經回答了我自己的查詢,您可以打開tcp端口,但不能將其綁定到網站。 –

+2

Richard - 雖然過去是這種情況,但無論角色類型如何,端點現在都可以是tcp,http或https。我構建了一個示例應用程序,其中包含tcp和http的混合體,並在幾個月前展示了每個角色的新25端點更新 - 請參閱博客文章 - http://www.davidmakogon.com/2011/05 /windows-azure-tip-go-beyond-5-endpoints.html –

3

Windows Azure中的Web角色是特殊用途,並提供用於託管前端Web應用程序的專用Internet信息服務(IIS)Web服務器。您可以快速輕鬆地將Web應用程序部署到Web角色,然後向上或向下擴展計算功能以滿足需求。

21

幾天前我遇到了這個SO問題/答案,我發現答案提供了一點點在我頭上(我是Azure和Web的新手)。我發現這個總結在Azure的基本面,今晚,我認爲是的工人和Web角色之間的核心分歧好高層次的概述:

兩者之間的主要區別是,Web角色 實例運行IIS,而工作者角色的實例則不運行。然而,兩者都是以相同的方式管理的 ,並且應用程序 同時使用兩者。例如,Web角色實例可能接受來自用戶的請求 ,然後將它們傳遞給輔助角色實例進行處理。 要向上或向下擴展應用程序,可以請求Windows Azure創建更多角色實例或關閉現有的 實例。與Windows Azure虛擬機類似,您只需在每個網絡或工作者角色實例運行的時間爲 時收取費用。

如果您在Azure的開發是新我強烈建議你閱讀完整的文章在這裏:Intro to Windows Azure

我希望這可以幫助別人一樣,因爲它有助於打開燈泡上我。