Previously, there was worker role in Azure, now I can't see one - so what to use for background/scheduled tasks, like maintainance, email sending, etc, should I create virtual machine and create windows services there or is there easier way?
4 回答
此常见问题解答的权威(当前)指南是 Guarav在 Windows Azure 中构建一个简单的任务计划程序- 事实证明,这并不是那么简单,而且它并不真正适合 Azure 网站(而是适合角色)。
最简单的解决方案是使用 MVC Web API 之类的东西创建 RESTful (ish) 路由(控制器等),并获得一个 cron 作业调度程序来启动它们。最近我一直在使用Aditi 云调度程序,它可以为您完成这些工作,并且在市场上是免费的(每月 5000 次调用)。
有这个新的调度程序http://www.windowsazure.com/en-us/services/scheduler/
Windows Azure Scheduler 允许您按任何计划调用操作,例如调用 HTTP/S 端点或将消息发布到存储队列。使用调度程序,您可以在云中创建可靠地调用 Windows Azure 内部和外部服务的作业,并根据需要、定期定期运行这些作业,或者将它们指定为将来的日期。该服务目前作为独立 API 提供。
如果您使用的是 Azure 网站(而且它们非常好),那么新的WebJobs功能可以让您戳 http(s) 端点或按计划运行脚本。
Web 和 Worker 角色是云服务模型的一部分,它们都存在并且没有消失。
如您对问题的评论中所述,门户网站不促进这些角色的构建;这是您可以通过 Visual Studio、Eclipse(辅助角色)或 PowerShell 创建的东西。
而且您不需要工作人员角色来执行后台任务。正如在许多其他答案中提到的,工作者和 Web 角色是 Windows Server 虚拟机的模板。由于 VM 是无状态的,并且每次都从相同的基线重新启动,因此模板决定了启动时安装的内容。
您可以在 Web 角色或辅助角色中将后台任务作为线程运行。因此,如果您愿意,您可以在与您的网站相同的 Web 角色实例中运行所有后台任务。
我建议完成Azure 培训工具包中的一些基本示例,这些示例通过 Visual Studio 创建不同的角色。