对于 Azure 中的网站和服务层,我是否需要辅助角色以外的其他角色?

Do I need other roles than Worker Role for a web site and service layer in Azure?

我之前已经将网站和服务部署到云中,但那是不久前的事了,我想重新审视我的方法来盘点我的技能。在研究的过程中,有人告诉我要使用工作者角色,但我不确定在什么星座中应用它。

图片展示了我的选择。我将设置两件事(最好在同一基础上 URL)。
1. 一个网站(ASP.NET,很可能是由 Razor 提供支持的 MVC)
2. 一个服务层(猜测是WCF,因为今天没有太多其他选择)

所以,在我天真的无知中,我为前者添加了 ASP.NET Web 角色,为后者添加了 WCF 服务 Web 角色。然后根据提示,我也添加了Worker Role。这就是我变得谦虚并开始怀疑我的无知是一种傲慢的地方...

三个都需要吗?还是 Worker Role 涵盖了其他角色?或者其他是否足够,我需要 Worker Role?还是我完全混淆了这里的概念?

我已经尝试 google 那些,但我意识到我还没有达到在这方面边做边学的门槛。我读得越多,就越感到困惑和头疼。不可否认,我的问题可能在于搜索词选择错误and/or 语言错误。如果是这样,我很抱歉...

答案是,这取决于...

Web 角色本质上是安装和配置了 IIS 的辅助角色。如果您真的愿意,您可以托管一个 WebApi/MVC、WCF 和所有来自同一个 Web 角色的过程事件,从而降低成本。

请记住,每个角色都是一个您必须付费的单独 VM,因此添加额外的角色以保持一切独立可能并不总是最好的主意。

例如,在我们的一个项目中,我们使用网络角色来托管 WebApi。一个用于处理内部事件的辅助角色,以及一个用于托管 WCF 服务的辅助角色(您也可以为此使用 Web 角色)。我们拆分它们是因为它们承担非常不同的工作负载并执行不同的功能,因此能够独立扩展它们是有意义的。

HTH

在云服务中使用多少个角色没有正确答案。但准确理解这些角色是什么很重要。

为@Peter 的回答添加一点:每个角色都是 VM(其内容)的 定义 - 将其视为 VM 模板。并且对于每个角色(模板),您必须至少有一个实例(VM)运行。如果您有一个角色,则您的最小足迹将是一个 VM(无论您为该角色指定的大小)。如果您有三个角色,您将至少有 3 个 VM 运行。

您拥有一个角色还是多个角色取决于您希望如何扩展您的应用程序。每个角色不仅定义了其中的内容,还定义了角色实例使用的 VM 的大小。通过为架构的不同部分设置不同的角色,您可以选择以不同方式扩展这些部分。例如,您可能只需要低资源实例来处理您的 Web 层,但可能需要更多 CPU 能力来处理您的服务层。也许您的 Web 层会根据用户流量动态扩展,但您可以仅使用一两个实例来处理服务层。当然,您可以将所有内容都放在一个角色定义中,然后将所有内容一起扩展。这完全取决于你。