据我了解,两者都在云中运行小型可重复的任务。
什么原因导致我选择哪种情况?
Answers:
一些基本信息:
WebJobs适用于不需要对其运行环境进行任何自定义且不会消耗太多资源的轻型工作项。它们也非常适合只需要定期运行,计划或触发的任务。它们便宜且易于设置/运行。它们在您的网站的上下文中运行,这意味着您将获得与您的网站相同的环境,并且它们使用的任何资源都是您的网站无法使用的资源。
辅助角色非常适合占用大量资源的工作负载,或者需要修改运行它们的环境(例如,特定的.NET Framework版本或操作系统中安装的某些版本)。辅助角色更昂贵,并且设置和运行起来稍微困难一些,但是它们提供的功能明显更多。
通常,如果您发现工作负载所需的资源超出了WebJobs所能提供的范围,那么我将从WebJobs开始,然后转到Worker Roles。
如果我们将“能力”作为计算能力来衡量,那么在虚拟环境中,这转化为物理机器(金属)上有多少层。虚拟机上的用户代码在管理程序的虚拟机管理程序之上运行。这是最厚的层。系统管理程序在任何可能的情况下都尝试仅充当金属的传递。
从根本上来说,WebJob的开销很小。它已沙盒化,已维护操作系统,并提供服务和模块以确保其运行。但是,由于应用程序代码使用相同的管理程序,因此它们在本质上与工作人员角色中的代码非常接近。
如果要衡量的是“灵活性”,请使用“工作人员角色”,因为它不受管理或沙盒管理,因此更加灵活。您可以使用更多的套接字,定义自己的环境,安装更多的软件包等。
如果您想要的是“功能”,则WebJobs具有一整套功能。包括虚拟化到本地资源,暂存环境,远程调试,触发,调度,易于连接到存储和服务总线等。
大多数人希望专注于解决问题,而不是在基础设施上花费时间。为此,您使用WebJobs。如果确实需要更大的灵活性,或者安全沙箱阻止您执行其他任何无法完成的事情,请转到“辅助角色”。
甚至可以构建混合解决方案,其中某些部分在WebJobs中完成,而其他部分在Worker Roles中完成,但这超出了此问题的范围。(提示:WebJobs SDK)