2012-02-10 98 views
6

我可以在同一个实例上运行Web角色和Worker角色,还是必须获得2个独立的主机实例并支付两倍的金额?Azure角色和实例

我有一个WCF Web API,我想在Azure上托管。我还有一个工作者角色,用于侦听Azure存储中的队列。每次将消息添加到队列中时,都会获取该消息,并根据消息运行一个小任务。

我想知道我是否可以在同一个实例上运行这两个。

回答

3

“工作者角色”和“Web角色”只是“运行IIS的Windows Server 2008”和“没有IIS运行的Windows Server 2008”的简单模板。关键是“角色”是Windows Server虚拟机的定义。对于每个“角色”,您都有一个或多个实例。

在Windows Azure中,两种角色类型都可以在启动脚本或OnStart()处理程序中安装软件,修改注册表设置等,并且都可以在Run()方法中运行代码。

对于您的情况,您可以在Web角色中运行WCF Web服务,然后在您的Run()方法(以相同角色)中启动一个进程,该进程侦听您的WCF Web服务发布的队列消息。不需要有新角色。

现在:一旦进入大容量情况,您可能希望将您的代码拆分为不同的角色,以便您可以独立扩展它们(无论是VM大小还是VM数量)。

我发布了另一个关于这个here的答案。

0

它完全取决于您的要求。您可以简单地拥有一个工作者角色,如here所述公开外部终结点并公开WCF服务。您还可以拥有作为WCF服务的Web角色并启动后台线程来检查队列。工人用这个信息做什么?什么过程被执行?这也对解决方案产生影响。

您需要考虑的一个关键问题是WCF服务和队列检索任务之间的缩放要求是否相同。如果他们是一个单一的角色应该足够好开始。