【发布时间】:2012-03-04 08:26:49
【问题描述】:
我有一个 Azure 托管的 Web 应用程序,它与多个辅助角色实例一起工作。目前,Web 应用程序通过将消息放入 Azure 队列以供工作人员获取,从而将工作传递给这些工作人员。工作人员通过将消息放入“反馈”队列来传递状态和进度消息。目前,为了通知我的浏览器客户端进度,我在浏览器中对 MVC 控制器方法进行基于 ajax 的定期轮询调用,该方法依次读取 Azure“反馈”队列并将这些消息作为 json 返回给浏览器.
显然,对于这种笨拙的轮询/排队方法,SignalR 看起来是一个非常有吸引力的替代方案,但是当我们谈论多个工作角色(而不是 Web 角色)时,我几乎没有找到关于如何执行此操作的指导需要向个人或所有客户发送状态。
SignalR.WindowsAzureServiceBus by Clemens vasters 看起来很棒,但在最后留下了一个有点高和干燥,即缺乏一个好的示例解决方案。
添加评论:从我目前的阅读来看,似乎没有来自 worker 角色的直接通信(相对于 web 角色)通过 SignalR 方法连接到浏览器客户端是可能的。似乎工作人员必须使用队列与 Web 角色进行通信。这反过来又强制采用轮询方法,即必须轮询队列以获取来自工作角色的消息 - 此轮询必须源自(驱动)来自它出现的浏览器(如何在 Web 角色中设置轮询循环?)
总之,SignalR,即使使用 Clemens Vasters 的 SignalR.WindowsAzureServiceBus 横向扩展方法,也无法处理从工作角色到浏览器的直接通信。
任何来自专家的 cmet 将不胜感激。
【问题讨论】:
-
您能够传递工作者角色的最轻量级方式是什么 => webrole => 客户端浏览器?
-
正如 bacr 所回答的。我也有多个工作角色作为客户端运行,并且 webrole 控制它们。
标签: azure-worker-roles signalr