Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 保持后台任务在云服务应用程序域内运行的最佳实践是什么?_.net_Asp.net Mvc 3_Azure_Signalr - Fatal编程技术网

.net 保持后台任务在云服务应用程序域内运行的最佳实践是什么?

.net 保持后台任务在云服务应用程序域内运行的最佳实践是什么?,.net,asp.net-mvc-3,azure,signalr,.net,Asp.net Mvc 3,Azure,Signalr,我正在运行Windows Azure云服务。我需要一个后台任务在我的云服务应用程序域中持续运行,所以不能选择外部工作者角色。这是因为我需要将某些事件通知JavaScript客户端,而我只能在AppDomain中这样做。我需要确保此任务始终运行,否则我的服务将无法正常工作 到目前为止,我的想法是在应用程序启动时创建一个线程,并让它永远运行,但我不知道这是否是更好的主意 有什么建议吗 编辑 我不能使用工作者角色的原因是,我需要与云服务位于同一应用程序域中,这样我就可以通过连接通知客户端。在同一asp

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

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

有什么建议吗

编辑


我不能使用工作者角色的原因是,我需要与云服务位于同一应用程序域中,这样我就可以通过连接通知客户端。

在同一asp.net web应用程序中,在该应用程序中,您托管SignalR、espose wcf svc服务或asmx web服务,并从h24服务调用它。现在,您可以以辅助角色或windows虚拟机中的windows服务托管h24服务。
PS:记住保护您的svc或asmx免受来自互联网的不必要呼叫

工作者角色正在持续运行,为什么这不是一个选项?您考虑过Azure通知中心吗@彼得里奇,谢谢你的回复。我更新了问题的更多细节。至于Azure通知中心,我使用的是SignalR,这是一个标准解决方案,似乎最适合通知JavaScript客户端。我认为您应该像运行任何其他Windows Server应用程序一样运行后台任务,因为Web角色或工作者角色实例只是带有一些脚手架代码的Windows Server 2012虚拟机。线程可以正常工作,如果有什么东西导致线程死亡,你只需要有一些机制来恢复。这似乎是一个不寻常的要求。您需要通知客户端的事件是如何执行的?为什么你不能从这些事件中发出通知?