回答

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

我希望这可以帮助别人一样,因为它有助于打开灯泡上我。