我想简化Azure Azure中后台任务的创建。
在asp.net应用程序中,后台任务一直很困难。对于简单的场景,您可以定期调用URL或启动后台线程。这两个选项都存在问题,两者都远非理想。例如,在调用URL时,对请求可以运行的时间量有限制,它会中断与工作单元的请求关联,并且您需要在应用程序中管理外部组件。对于后台线程,它有点好,但IIS仍然是一个请求驱动的服务,有dangers when implementing recurring background tasks。目前正在开展工作以支持IIS本地的后台任务,但这仍然是在遥远的未来。今天推荐的方法是使用Windows服务,这很好,因为它不是PAAS,没有理由不使用整个服务器。
Azure在后台任务方面面临着类似的问题,简单的任务很简单,但如果你想要更大的任务,你就会一直跳到工作者角色。然而,即使你使用这些方法,他们仍然有一些问题。
可以使用Azure移动服务任务计划运行简单任务,但即使是那些也存在一些问题。比如任务长时间运行。它还意味着您在主应用程序中拥有一半的任务逻辑,一半以脚本的形式管理其余的工作。我想要一个完整的后台服务。
工人角色大多数时候都是公平的,而且坦率地说他们通常都是矫枉过正。当我更愿意通过网站和服务共享一个VM时,它们需要一个完整的专用虚拟机。然后,如果需要,可以独立扩展它们。
我认为azure需要第三种选择。使用可在共享或保留/标准环境中运行的PAAS部署服务的能力。这应该与当前的Azure网站完全相同,因为它可以在共享模式下运行,也可以在我在Azure中托管的其他网站上运行。然后,该服务和我的网站可以在一个虚拟机中运行,以实现具有成本效益的阶段性或在我想要的多个专用虚拟机上运行。
所以我有两个问题:
今天做这件事的最佳方式是,有没有我错过的选择?
Azure将来是否会添加这样的服务?
答案 0 :(得分:5)
好消息..
Introducing Windows Azure Web Jobs
所以现在你可以拥有一个PaaS网站和后台服务,甚至不用看工人或角色!
答案 1 :(得分:0)
为您提供几种选择:
http://www.voiceoftech.com/swhitley/index.php/2011/07/windows-azure-task-scheduler/ http://www.bondigeek.com/blog/2011/03/25/runninginstalling-a-windows-service-in-an-azure-web-role/
他们都利用启动任务来设置计划任务或Windows服务。这些只适用于Cloud Service,而不适用于Windows Azure Web站点。目前我还没有办法用WAWS做这些事情。
如果要求将此内容添加到WAWS或Cloud Service产品中,我建议您在此处发布:http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting