porta microsoft management azure azure-worker-roles azure-webjobs

microsoft - porta azure



Rol de trabajo vs trabajo web (3)

Algo que debe recordar al elegir usar un trabajo web o un rol de trabajador:

  • Una función de trabajador está alojada en una máquina virtual dedicada, una tarea web está alojada en un contenedor de aplicación web.

  • Una función de trabajador se escalará de forma independiente, una tarea web se escalará junto con el contenedor de aplicación web.

Los trabajos web son perfectos para sondear los canales RSS, verificar y procesar mensajes y enviar notificaciones, son livianos y más baratos que los roles de los trabajadores, pero son menos poderosos.

Por lo que entiendo, ambos ejecutan pequeñas tareas repetibles en la nube.

¿Qué razones y en qué situaciones podría querer elegir una sobre la otra?


Alguna información básica:

Los WebJobs son buenos para elementos de trabajo ligeros que no necesitan ninguna personalización del entorno en el que se ejecutan y no consumen muchos recursos. También son realmente buenos para tareas que solo necesitan ejecutarse periódicamente, programarse o activarse. Son baratos y fáciles de instalar / ejecutar. Se ejecutan en el contexto de su sitio web, lo que significa que obtiene el mismo entorno en el que se ejecuta su sitio web, y los recursos que utilizan son recursos que su sitio web no puede usar.

Las Roles de trabajo son buenas para cargas de trabajo más intensivas en recursos o si necesita modificar el entorno en el que se están ejecutando (es decir, una versión particular de .NET framework o algo instalado en el sistema operativo). Las funciones de los trabajadores son más costosas y un poco más difíciles de configurar y ejecutar, pero ofrecen mucha más potencia.

En general, comenzaría con WebJobs y luego pasaría a Trabajadores Roles si encuentra que su carga de trabajo requiere más de lo que WebJobs puede ofrecer.


Si vamos a medir la "potencia" como potencia computacional, entonces en un entorno virtual, esto se traduce en cuántas capas hay encima de la máquina física (el metal). El código de usuario en una máquina virtual se ejecuta en la parte superior de un hipervisor, que administra la máquina física. Esta es la capa más gruesa. Siempre que sea posible, el hipervisor intenta simplemente servir como un paso al metal.

Básicamente, hay poca sobrecarga para WebJobs. Es un espacio aislado, se mantiene el sistema operativo, y hay servicios y módulos para asegurarse de que se ejecute. Pero el código de la aplicación es esencialmente tan cercano al metal como en Roles de trabajo, ya que usan el mismo hipervisor.

Si lo que quiere medir es "flexibilidad", entonces use Roles de trabajo, ya que no se gestiona ni está protegido, es más flexible. Puede usar más sockets, definir su propio entorno, instalar más paquetes, etc.

Si lo que quieres son "características", WebJobs tiene una gama completa de características. Incluyendo, redes virtuales para recursos locales, entornos de ensayo, depuración remota, activación, programación, fácil conexión al almacenamiento y bus de servicio, etc.

La mayoría de la gente quiere enfocarse en resolver su problema y no invertir tiempo en infraestructura. Para eso, usas WebJobs. Si encuentra que necesita más flexibilidad o si el entorno limitado de seguridad le impide hacer algo que no se puede lograr de otra manera, cambie a Roles de trabajador.

Incluso es posible crear soluciones híbridas donde algunas partes se hacen en WebJobs y otras en Roles de trabajo, pero eso está fuera del alcance de esta pregunta. (sugerencia: WebJobs SDK)