首页 文章

Azure角色和实例

提问于
浏览
6

我是否可以在同一个实例上运行Web角色和辅助角色,或者我是否必须获得2个单独的托管实例并支付两倍的金额?

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

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

2 回答

  • 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

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

    您需要考虑的一个关键事项是WCF服务和队列检索任务之间的扩展要求是否相同 . 如果他们是一个单一的角色应该足够开始 .

相关问题