【问题标题】:What is the best practice for keeping a background task running inside the Cloud Service application domain?保持后台任务在云服务应用程序域内运行的最佳实践是什么?
【发布时间】:2013-04-04 00:54:46
【问题描述】:

我运行的是 Windows Azure 云服务。我需要一个在我的云服务应用程序域中不断运行的后台任务,因此不能选择外部工作者角色。这是因为我需要通知 JavaScript 客户端某些事件,而我只能在我的 AppDomain 中执行此操作。我需要确保此任务始终运行,否则我的服务将无法正常运行。

到目前为止,我的想法是在应用程序启动时创建一个线程并让它永远运行,但我不知道这是否更好。

有什么建议吗?

编辑

我不能使用 Worker Roles 的原因是我需要与云服务在同一个应用程序域中,这样我才能通过SignalR 连接通知客户端。

【问题讨论】:

  • 一个工作者角色持续运行,为什么这不是一个选项?
  • 您是否考虑过 Azure 通知中心? msdn.microsoft.com/en-us/library/windowsazure/jj927170.aspx
  • @PeterRitchie,感谢您的回复。我用更多细节更新了这个问题。至于 Azure 通知中心,我使用的是 SignalR,这是一个标准解决方案,似乎最适合通知 JavaScript 客户端。
  • 我认为您应该像使用任何其他 Windows Server 应用程序一样运行后台任务,因为 Web 角色(或工作角色)实例只是一个 Windows Server 2012 VM,其中包含一些脚手架代码。线程工作正常,如果某些事情导致线程死亡,你只需要有一些重生机制。
  • 似乎是一个不寻常的要求。您需要通知客户的事件是如何执行的?为什么你不能从这些事件中通知?

标签: .net asp.net-mvc-3 azure signalr


【解决方案1】:

在托管 SignalR 的同一个 asp.net Web 应用程序中,设置 wcf (svc) 服务或 asmx Web 服务并从“h24 服务”调用它。现在,您可以在 Worker Role 或 Windows 服务(在 Windows 虚拟机中)中托管您的 h24 服务。
PS:请记住保护您的 svc 或 asmx 免受来自互联网的不必要呼叫;)

【讨论】:

    猜你喜欢
    • 2017-02-15
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2013-04-27
    相关资源
    最近更新 更多