据我了解,它们都在云端运行小型可重复任务。
我可以选择哪种原因以及在什么情况下选择其中一种?
答案 0 :(得分:80)
一些基本信息:
WebJobs 适用于轻量级工作项,这些工作项不需要对其运行的环境进行任何自定义,也不会占用太多资源。它们也非常适合只需要定期运行,计划或触发的任务。它们便宜且易于设置/运行。它们在您的网站环境中运行,这意味着您获得了与您的网站运行相同的环境,并且他们使用的任何资源都是您的网站无法使用的资源。
工作者角色适用于资源更密集的工作负载,或者您需要修改运行它们的环境(即特定的.NET框架版本或安装在操作系统中的某些内容)。工作者角色更昂贵,设置和运行起来稍微困难,但它们提供的功率要大得多。
一般情况下,我会从WebJobs开始,如果您发现工作负载需要的数量超过WebJobs所能提供的数量,那么就转移到工作者角色。
答案 1 :(得分:21)
如果我们要将“功率”作为计算能力进行测量,那么在虚拟环境中,这将转化为物理机器(金属)顶部有多少层。虚拟机上的用户代码运行在管理物理机的管理程序之上。这是最厚的一层。只要有可能,管理程序就会尝试简单地作为金属的传递。
WebJobs的开销基本上很少。它是沙盒,操作系统是维护的,并且有服务&模块,以确保它运行。但是应用程序代码基本上与工作者角色中的金属一样接近,因为它们使用相同的管理程序。
如果您要衡量的是“灵活性”,那么使用工作者角色,因为它不受管理或沙盒化,它更灵活。您可以使用更多套接字,定义自己的环境,安装更多软件包等。
如果你想要的是“功能”,那么WebJobs拥有完整的功能。包括虚拟网络到本地资源,登台环境,远程调试,触发,调度,轻松连接存储和服务总线等......
大多数人都希望专注于解决他们的问题,而不是在基础设施上投入时间。为此,您使用WebJobs。如果您确实发现需要更多灵活性,或者安全沙箱阻止您执行任何其他方式无法完成的操作,请转到“工作者角色”。
甚至可以构建混合解决方案,其中某些部分在WebJobs中完成,而其他部分在工作者角色中完成,但这不在本问题的范围内。 (提示:WebJobs SDK)
答案 2 :(得分:11)
选择使用Web作业或工作者角色时要记住的事项:
工作者角色自托管在专用VM上,Web作业托管在Web App容器中。
工作者角色将独立扩展,Web作业将与Web App容器一起扩展。
Web作业非常适合轮询RSS提要,检查和处理消息以及发送通知,它们比工作者角色更轻巧,更便宜,但效率更低。