工作者角色与网络工作


Answers:


81

一些基本信息:

WebJobs适用于不需要对其运行环境进行任何自定义且不会消耗太多资源的轻型工作项。它们也非常适合只需要定期运行,计划或触发的任务。它们便宜且易于设置/运行。它们在您的网站的上下文中运行,这意味着您将获得与您的网站相同的环境,并且它们使用的任何资源都是您的网站无法使用的资源。

辅助角色非常适合占用大量资源的工作负载,或者需要修改运行它们的环境(例如,特定的.NET Framework版本或操作系统中安装的某些版本)。辅助角色更昂贵,并且设置和运行起来稍微困难一些,但是它们提供的功能明显更多。

通常,如果您发现工作负载所需的资源超出了WebJobs所能提供的范围,那么我将从WebJobs开始,然后转到Worker Roles。


2
很高兴知道...即使我处理云服务(Web角色),我也可以从webjob开始进行后台处理(轻量级),然后根据需要切换到workerrole。不一定总是将WorkerRole作为默认选择。由于工作者角色是随云服务模板一起提供的,并且Web作业是另一回事(从模板角度而言),所以这可能不太明显。谢谢!
拉曼2015年

22

如果我们将“能力”作为计算能力来衡量,那么在虚拟环境中,这转化为物理机器(金属)上有多少层。虚拟机上的用户代码在管理程序的虚拟机管理程序之上运行。这是最厚的层。系统管理程序在任何可能的情况下都尝试仅充当金属的传递。

从根本上来说,WebJob的开销很小。它已沙盒化,已维护操作系统,并提供服务和模块以确保其运行。但是,由于应用程序代码使用相同的管理程序,因此它们在本质上与工作人员角色中的代码非常接近。

如果要衡量的是“灵活性”,请使用“工作人员角色”,因为它不受管理或沙盒管理,因此更加灵活。您可以使用更多的套接字,定义自己的环境,安装更多的软件包等。

如果您想要的是“功能”,则WebJobs具有一整套功能。包括虚拟化到本地资源,暂存环境,远程调试,触发,调度,易于连接到存储和服务总线等。

大多数人希望专注于解决问题,而不是在基础设施上花费时间。为此,您使用WebJobs。如果确实需要更大的灵活性,或者安全沙箱阻止您执行其他任何无法完成的事情,请转到“辅助角色”。

甚至可以构建混合解决方案,其中某些部分在WebJobs中完成,而其他部分在Worker Roles中完成,但这超出了此问题的范围。(提示:WebJobs SDK)


“大多数人希望专注于解决问题,而不是花时间在基础架构上。为此,您可以使用WebJobs。” -是的,但是工作者角色比网络工作涉及更多的成本。这意味着,人们可以选择所需的内容以及预算中的内容,这很公平!
尼尔曼

13

选择使用Web作业或辅助角色时要记住的一些事项:

  • 辅助角色自身托管在专用VM上,Web作业托管在Web App容器中。

  • 工作者角色将独立扩展,Web作业将与Web App容器一起扩展。

Web Jobs非常适合轮询RSS feed,检查和处理消息以及发送通知,它们比Worker Roles轻巧且便宜,但功能却不那么强大。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.