116

我工作的应用程序包含一个 Web 角色:它是一个简单的 Web 应用程序。我需要在 Windows Azure 中托管应用程序,因此我创建了一个 Web 角色。我其实很想知道这些角色是干什么用的。它们在编码方面或存储方面的意义是什么?

4

4 回答 4

100

编辑 3/3/2013 - 更新以引用 UDP 端点、虚拟机和更多语言

编辑 6/6/2013 - 更新以反映 VM 角色的终止,并将 Web/工作者角色基线操作系统映像更新到 Windows Server 2012

@Vladimir 的良好链接。再澄清一点:所有角色(web、worker)本质上都是 Windows Server。Web 和 Worker 角色几乎相同:

  • Web 角色是启用了 IIS 的 Windows Server VM
  • 工作角色是禁用 IIS 的 Windows Server VM(您可以手动启用它)
  • VM 角色是您通过 Hyper-V 在本地构建并上传到 Azure 的 Windows Server 2008 映像(现已停产,自 2013 年 5 月 31 日起不再提供
  • 虚拟机是在 Azure 中创建的 Windows 或 Linux 映像,作为 vhd 存储在您自己的存储中,并且对 VM 角色具有多项增强功能。例如:由于 vhd 位于您自己的存储帐户中,您可以轻松地从 vhd 创建映像模板,将其复制到新 vhd,甚至将其上传到VM Depot(仅限 Linux)。

要回答有关如何处理这些角色的问题:平台培训工具包(如下所述)将为您提供许多好的想法和示例,但这里有一些简单的用例:

  • 您可以运行任何公开 tcp、http、https 或 udp 端点的代码(Web 应用程序、SOAP/REST 服务等)。不过,您需要考虑无状态的做事方式 - 如果您有多个 VM 实例在运行,则用户流量将分布在这些实例中。平台培训工具包将向您展示如何使用存储或缓存来处理此问题。
  • 您可以运行脱离队列或计时器的代码。也许您有按需任务,例如照片的缩略图生成,或基于用户输入的计算。这些不需要外部可用的端点。您可以将您的请求推送到一个队列,然后运行一个任务,该任务只是从这个队列中获取信息(并且您可以跨多个实例扩展这个过程,所有实例都使用队列消息)。
  • 您可以运行 .NET、Java、php、python、node、ruby 等。您只需将适当的运行时代码与您的项目代码一起分发。所有语言都可以对 Azure API 进行 REST 调用,并且有几种语言(包括上面提到的那些)有 SDK 可以为你处理这个问题。所有语言的 SDK 都在这里,源代码在 github,这里
  • 使用 VM 角色,您可以安装和运行具有非常复杂/耗时的安装、需要手动干预的安装以及无法可靠自动化的安装的软件。在这种情况下,您必须处理操作系统维护。除了虚拟机角色,现在还有虚拟机,提供基于云的虚拟机构建以及 Windows 和 Linux 支持。我建议使用虚拟机而不是 VM 角色。

使用 Web 和 Worker 角色,操作系统和相关补丁会为您处理好;您无需管理 VM 即可构建应用程序的组件。

使用 VM 角色,您可以构建完整的 Windows Server 映像,向其中添加 Azure 挂钩,并将整个 VM 推送到云中(然后随着时间的推移维护 VM 映像)。

使用虚拟机,您只需从图库中选择一个操作系统映像,该映像会为您创建并作为 vhd 存储在 blob 存储中。然后,您可以按照自己的喜好设置 RDP/ssh。

戴着建筑师的帽子,这就是它变得有趣和有趣的地方。您可以在 Web 角色或辅助角色中运行 Web 服务(并且能够在其中打开端口);您可以以 Worker 角色托管 Tomcat 或其他 Web 服务器。您可以选择将网站和服务组合在一个角色中,或者将它们拆分为多个角色以满足不同的可扩展性需求。

作为一个好的开始,请查看Platform Training Kit并开始进行练习。

于 2011-08-19T12:54:57.250 回答
31
  • Web 角色是托管在 IIS 中的 Web 应用程序。
  • 工作角色是可以做一些工作的进程(即自动压缩上传的图像,每当数据库发生变化时做一些事情,从队列和进程中获取新消息,你可以命名它)
  • VM 角色托管 VM
于 2011-08-19T09:57:22.937 回答
21

几天前我遇到了这个 SO 问题/答案,我发现提供的答案有点让我头疼(我是 Azure 和 Web 的新手)。我今晚在 Azure 基础知识中找到了这个摘要,我认为这是对工作角色和 Web 角色之间核心差异的一个很好的高级概述:

两者的主要区别在于 Web 角色的实例运行 IIS,而辅助角色的实例则不运行。但是,两者都以相同的方式进行管理,应用程序通常同时使用两者。例如,Web 角色实例可能会接受来自用户的请求,然后将它们传递给辅助角色实例进行处理。要扩大或缩小您的应用程序,您可以请求 Windows Azure 为任一角色创建更多实例或关闭现有实例。与 Windows Azure 虚拟机类似,您只需为每个 Web 或辅助角色实例运行的时间付费。

如果您是 Azure 开发的新手,我强烈建议您在此处阅读完整文章:Windows Azure 简介

我希望这对某人有帮助,就像它帮助我打开灯泡一样。

于 2013-12-17T01:06:58.840 回答
3

Windows Azure 中的 Web 角色具有特殊用途,并提供专用的 Internet 信息服务 (IIS) Web 服务器,用于托管前端 Web 应用程序。您可以快速轻松地将 Web 应用程序部署到 Web 角色,然后向上或向下扩展您的计算能力以满足需求。

于 2012-05-10T15:38:41.840 回答