If we need to measure "power" as computing power, then in a virtual environment this translates to how many layers are on top of a physical machine (metal). The user code in the virtual machine runs on top of the hypervisor that controls the physical machine. This is the thickest layer. Whenever possible, the hypervisor simply tries to serve as the passage of metal.
WebJobs has a fundamentally small overhead. It is sandboxed, OS supported, and there are services and modules to make sure it works. But the application code is essentially close to metal, as in Worker Roles, because they use the same hypervisor.
If what you want to measure is โflexibility,โ then use Worker Roles because it is not managed or isolated, it is more flexible. You can use more sockets, define your own environment, install more packages, etc.
If you need "functions", then WebJobs has a complete set of functions. Including virtual network resources on preliminary resources, an intermediate environment, remote debugging, startup, scheduling, easy connection to the storage and service bus, etc.
Most people want to focus on solving their problem, rather than investing time in infrastructure. You use WebJobs for this. If you find that you need more flexibility, or if an isolated security environment does not allow you to do something that cannot be accomplished in any other way, go to Worker Roles.
You can even create hybrid solutions where some parts run in WebJobs and others in Worker Roles, but that is beyond the scope of this question. (hint: WebJobs SDK)
Jaime Espinosa Mar 26 '15 at 19:33 2015-03-26 19:33
source share