我想简化每个人在 Azure 中创建后台任务。
在 asp.net 应用程序中,后台任务一直很困难。对于简单的场景,您可以定期调用 URL 或启动后台线程。这两种选择都有问题,而且都远非理想。例如,在调用 URL 时,请求可以运行的时间量有限制,它会破坏请求与工作单元的关联,并且您需要将外部组件作为应用程序的一部分进行管理。对于后台线程,它稍微好一点,但 IIS 仍然是请求驱动的服务,并且在执行重复的后台任务时存在危险. 目前正在开展工作以在 IIS 中本地支持后台任务,但这仍处于遥远的未来。今天推荐的方法是使用 Windows 服务,这很好,因为它不是 PAAS,没有理由不使用整个服务器。
Azure 在后台任务方面面临着类似的问题,简单的任务很容易,但如果你想要更大的任务,你可以直接跳到 Worker 角色。但是,即使您确实使用了这些方法,它们仍然存在一些问题。
可以使用 Azure 移动服务任务计划运行简单的任务,但即使是那些也有一些问题。例如当任务长时间运行时。这也意味着您的主应用程序中有一半的任务逻辑,一半以脚本的形式来管理其余的工作。我想要一个集中在一个地方的后台服务。
工人角色在大多数情况下都过于重量级,坦率地说,它们通常是矫枉过正的。当我更愿意通过网站和服务共享单个虚拟机时,它们需要一个完整的专用虚拟机。然后,如果我需要,以后可以独立扩展它们。
我认为天蓝色需要第三种选择。使用可在共享或保留/标准环境中运行的 PAAS 部署服务的能力。这应该与当前的 Azure 网站完全一样,因为它可以在共享模式下运行,也可以在保留的 VM 上与我在 Azure 中托管的其他网站一起运行。然后,该服务和我的网站可以在一个虚拟机中运行,以实现具有成本效益的阶段性或跨多个我想要的专用虚拟机。
所以我有两个问题:
今天最好的方法是什么,有没有我错过的选择?
Azure 将来会添加这样的服务吗?