Windows Azure角色间通信

Mat*_*att 2 queue azure asp.net-mvc-4 azureservicebus

我想创建一个Azure应用程序,它执行以下操作:

  • 向用户呈现MVC 4网站(web角色),其显示命令列表.
  • 当用户选择命令时,它将广播给所有工作者角色.
  • 工作者角色处理任务,存储结果并通知Web角色
  • Web角色显示工作者角色的组合结果

从我一直阅读的内容来看,似乎有两种方法:Windows Azure Service Bus或使用Queues.每个辅助角色还将结果存储在数据库中.

服务总线似乎更适合其发布/订阅模型,因此所有工作者角色将获得相同的命令并且大致相同的时间.队列似乎更容易使用.

在开发时,服务总线是否可以在本地与仿真器一起使用?我正在使用免费试用版,但在开发过程中无法持续保留应用程序.此外,在使用队列时,如何通知Web角色处理完成?

Ric*_*ney 5

我同意.ServiceBus是此消息传递要求的更好选择.你可以通过一些努力对队列做同样的事情.但是,您将编写大量代码来实现ServiceBus已经为您提供的功能.

没有ServiceBus的本地模拟器,就像Azure Strorage服务(队列/表/ blob)一样.但是,在开发环境中本地运行时,您仍可以使用ServiceBus在角色之间进行消息传递.

至于您关于通知Web角色处理完成的最后一个问题,有几种方法可以到这里.只是一些想法(不详尽的清单)......

  1. 表存储其中web角色可以定期检查工作单元的状态.
  2. 已完成工作的另一个ServiceBus队列/主题.
  3. 内部端点.您必须有逻辑来知道它是否只是来自工作者角色N的更新,或者它是否指示所有工作者角色的已完成工作单元.