Etiquetas

, ,

Una de las nuevas funcionalidades que vamos a encontrar en los Web Sites es la posibilidad de agregar un job que ejecute alguna tarea necesaria. Muchas veces nos encontramos con que una solución puede ser soportada por un Web Site, pero a raíz de alguna tarea que debe ser realizada en segundo plano y sobre todo que no depende de un request, debemos implementar un Worker Role.

Los Web Jobs nos permiten ejecutar acciones que se encuentren en segundo plano como: procesar items de una cola, ejecutar algún stored procedure como podría ser requerido para eliminar sesiones caducas de SQL o cualquier otro tipo de tarea. Mediante esta funcionalidad podemos disponer de la ejecución en segundo plano que se encuentre en los siguientes formas: EXE, CMD, BAT, SH, PHP, PY, JS.

Para comenzar a utilizar esta funcionalidad debemos ir a la solapa WEBJOBS dentro de un Web Site y crear un nuevo job.

Para este ejemplo implementaremos un site muy simple que muestre información de una tabla de base de datos SQL Database.

Nuestro site tendrá una sola página que muestra directamente los datos:

image

Está página consulta una tabla en SQL que tiene el siguiente formato:

image 

Una vez que tengamos la base de datos creada y el sitio listo procedemos a publicarlo.

Por supuesto al principio la tabla no tendrá datos, con lo cual la página saldrá vacía. Para insertar datos en la tabla utilizaremos un Web Job, para lo cual crearemos una aplicación de consola que obtenga algunos datos de la instancia y los inserte en la tabla.

image

Como se puede observar no es necesario que la aplicación haga referencia a ninguna librería en particular.

Una vez creada la aplicación de consola debemos generar un archivo .ZIP con todo lo necesario para su ejecución.

Para crear el Web Job debemos acceder al portal de Windows Azure y acceder al Web Site. Dentro de la solapa WEBJOBS seleccionamos NEW.imageEn el formulario de creación del Web Job le asignaremos un nombre, subiremos el archivo .ZIP que creamos en el paso anterior y seleccionamos una de las tres modalidades de programación de ejecución para el Job:

  • Ejecución continua.
  • Ejecución programada.
  • Bajo demanda.

Para este ejemplo vamos a seleccionar Bajo Demanda. Una vez que ya hemos creado el Web Job, podemos acceder a la opción de WEBJOBS y ejecutarlo manualmente.

image

Una vez ejecutado podemos visualizar la información que registró el Job dentro de la base de datos ingresando a nuestro site.

image

Una de las pruebas interesantes para realizar es escalar el sitio web y ejecutar nuevamente el Job. El objetivo de realizar esta operación es comprobar el funcionamiento de los Jobs y poder identificar si mantendrá uno para todo el sitio web o bien utilizará uno por cada instancia.

image

Una vez aumentada la cantidad de instancias del web site a 2 ejecutamos nuevamente el Web Job. Cuando la ejecución del job finalice volvemos a ingresar a nuestro site de pruebas para verificar los datos.

Como se puede observar, aún teniendo dos instancias, el job solamente será ejecutado una vez.

image

En este ejemplo hemos utilizado la opción de ejecutar el job bajo demanda para poder realizar nuestra prueba con distintas instancias e identificar como era su comportamiento. Por supuesto, la gran mayoría de los casos de negocio requiere de ejecución continua o bien programada cada cierto tiempo.

En el siguiente link podrán encontrar información sobre como utilizar el SDK de Web Jobs