Saltar al contenido

Servicios de Fondo

Descripción General

La función Servicios en segundo plano de Vinyl permite que Vinyl ejecute eventos de larga duración en una cola de fondo limitada. El servicio en sí está alojado en la aplicación web Vinyl en IIS. Mientras el sitio web esté ejecutándose, el servicio en segundo plano estará ejecutándose. No requiere ninguna instalación o configuración adicional.

Hay dos componentes involucrados en el Servicio de fondos de Vinyl:

Cola de Fondo

Muchas veces un desarrollador crea un evento que realiza varias acciones, posiblemente abarcando múltiples fuentes de datos, o incluso llamadas REST a sistemas externos. La cola en segundo plano permite al desarrollador especificar que el evento debe ejecutarse en segundo plano en lugar de en primer plano. Hay algunos beneficios al hacer esto:

  • Al hacer clic en un botón para ejecutar un evento, el control se devuelve inmediatamente al cliente. El cliente puede continuar con su trabajo mientras el trabajo continúa ejecutándose en el sistema alojar.
  • La cola en segundo plano ahorra recursos. Al colocar eventos en segundo plano que de otro modo consumirían recursos, el desarrollador permite que Vinyl limite la ejecución de esos eventos. A medida que crece la carga en el sistema, se reduce el nivel de paralelismo de la cola de trabajos. Esto permite que el servidor web opere con más subprocesos y más acceso a la CPU. Por ejemplo, si 100 personas inician sesión en el sitio y hacen clic en un botón que ejecuta un evento, IIS necesitaría manejar 100 ejecuciones simultáneas de ese evento. Al enviar el evento a la cola de trabajos, podemos reducir la concurrencia para ejecutar solo una pequeña cantidad simultáneamente, lo que libera recursos para el sitio web.
  • La cola en segundo plano monitorea eventos y almacena el historial. Tenemos la intención de ampliar esta funcionalidad a todos los Eventos en el futuro. Por ahora, si está interesado en mantener un registro del historial de ejecución de un Evento que incluya:

    • ¿Quién dirigió el evento?
    • ¿Cuándo lo ejecutaron?
    • ¿Cuánto tiempo tardó en ejecutarse?
    • ¿Fue exitoso (si no, qué errores ocurrieron)?

Esta información está disponible en la sección Monitoreo del IDE. En la página inicial encontrará una lista de servicios en ejecución y una lista de horarios o eventos en ejecución.

Nota

El Servicio de Antecedentes recorta las tablas de registro todos los días. Elimina cualquier evento exitoso de más de 7 días y cualquier evento fallido de más de 30 días.

Para especificar que un evento debe ejecutarse en segundo plano, el desarrollador debe ubicar el evento, luego hacer doble clic en el evento, editarlo y seleccionar un tipo de ejecución de Iniciar ahora (en segundo plano). A partir de ese momento, Vinyl pondrá en cola el evento para su ejecución cada vez que un usuario lo ejecute.

Si su evento tiene reglas de validación y esas reglas devuelven un error, Vinyl devolverá los resultados inmediatamente al usuario junto con los mensajes de validación y cancelará la ejecución del evento en la cola. Advertencia Las validaciones no se admiten cuando se ejecuta el evento en segundo plano.

Si corresponde, considere cambiar el mensaje de éxito del evento para que transmita al usuario final que la operación se está ejecutando en segundo plano.

La cola de trabajos de Vinyl duerme indefinidamente, utilizando recursos mínimos hasta que un evento se pone en cola. No realiza encuestas para ejecutar trabajos. En su lugar, utiliza el patrón asincrónico basado en tareas de Microsoft, lo que garantiza que los recursos del sistema se utilicen por completo.

Programador

Vinyl admite la programación de la ejecución de Eventos en lugar de requerir la ejecución manual de Eventos. El programador, al igual que la cola de trabajos, se ejecuta en el servicio en segundo plano mientras se ejecuta la aplicación web. Actualmente, Vinyl admite un modo de ejecución para un evento programado, llamado ejecución de varias filas. Esto es diferente a un evento ejecutado mediante un clic en un botón. Cuando un usuario ejecuta un evento en un objeto comercial, se ejecuta en una sola fila. Cuando el planificador ejecuta un evento, se ejecuta en todo el objeto comercial. Esto significa que la cola recorre cada fila del objeto comercial y ejecuta el evento programado en esa fila. Para ello, pone en cola cada fila para su ejecución en la cola de trabajos.

Debido a que los eventos programados se envían a la cola de trabajos para su ejecución, Vinyl puede aprovechar los beneficios de rendimiento que se obtienen al limitar la ejecución de estos conjuntos de datos potencialmente grandes. Esto también proporciona la misma visibilidad de los eventos programados con respecto al seguimiento y el registro. Habrá una entrada en el registro para cada fila ejecutada por el evento programado. La información de clave principal para cada fila se incluirá en el registro para ayudar a encontrar y depurar problemas.

Para programar la ejecución de un evento, ubique el evento, haga doble clic en él y establezca el Tipo de ejecución en Iniciar mediante programación (en segundo plano). Esto permitirá adjuntar el evento a un cronograma.

Para crear una programación, vaya a la sección Monitoreo en el IDE. Haga clic en Horarios y cree un nuevo horario.

Los siguientes son los tipos de programaciones que admite Vinyl:

  • Ejecución única: elija un día y una hora en el futuro para que se ejecute el evento. Vinyl ejecutará el Evento a la hora programada y luego desactivará la programación.
  • Ejecución periódica - Ejecuta el evento cada X segundos/minutos/horas.
  • Ejecución diaria - Ejecuta el evento a una hora exacta cada X días. Esto se puede configurar para que se ejecute todos los días, cada 3 días, cada 7 días, etc.
  • Ejecución Semanal - Ejecuta el Evento a una hora exacta, en un día exacto de la semana, cada X número de semanas. En este cronograma, el desarrollador puede elegir días específicos de la semana para ejecutar el Evento. Por ejemplo, ejecútelo cada dos domingos y miércoles a las 7 p.m.
  • Ejecución activada: ejecuta el evento en respuesta a una señal, como un usuario que inicia sesión en el sistema.

Para agregar un evento a una programación, vaya a la página Programaciones y haga clic en el ícono Eventos. Agregue el evento a la programación, especificando una simultaneidad máxima y la identificación del usuario que ejecutará el evento. Si el objeto comercial del Evento devuelve varias filas, Vinyl intentará ejecutar el Evento en cada fila con la simultaneidad especificada. Por ejemplo, si el objeto comercial devuelve 100 filas y la simultaneidad máxima es 3, Vinyl intentará ejecutar 3 instancias del evento simultáneamente, hasta que el evento se haya ejecutado 100 veces (una por cada fila).

Nota

Consulte el siguiente artículo sobre Ejecutar como usuario si desea ejecutar un evento programado como un usuario específico.

Instancias de Servicio

Esta página permite al usuario detener/iniciar el servicio en segundo plano y monitorear los servicios activos y los trabajos en ejecución.

  • Proporciona la fecha de inicio del servicio y el tiempo de actividad.
  • Hay botones Detener e Iniciar para detener el servicio en segundo plano.

  • Detener agotará todos los trabajos que se están ejecutando actualmente para finalizar y cancelará cualquier trabajo en cola que salga. También evitará que cualquier evento programado o invocado se ponga en cola.

  • Iniciar iniciará la copia de seguridad del servicio en segundo plano, borrará la tabla de actividades y comenzará la programación y el soporte del evento en segundo plano.
  • La página no actualiza constantemente su estado en la interfaz de usuario, por lo que hay un botón Actualizar. Al hacer clic en Actualizar se cargará la información más reciente para las instancias de servicio en ejecución y los trabajos en ejecución sin necesidad de que el usuario actualice todo el navegador.

Página de Registros

  • Muestra mensajes de la instancia en ejecución actual del servicio.
  • Disponible desde la página Instancias de servicio

Cancelación de un Trabajo

La forma en que Vinyl cancela un trabajo es diferente según el estado del trabajo y el tipo de trabajo que se esté ejecutando.

  • Estado pendiente: el trabajo se creó y se puso en cola, pero aún no se está ejecutando. En este estado, Vinyl cancela inmediatamente el trabajo.
  • Estado de ejecución: si el trabajo se está ejecutando, Vinyl envía una solicitud de cancelación al trabajo. Algunas operaciones tardan más en cancelarse que otras y algunas operaciones no permiten interrupción. Cuando el trabajo llega a un punto que admite la cancelación, lo cancelará y actualizará su información de actividad.
  • Programar trabajo: si el trabajo es un trabajo programado y ha creado n números de trabajos para ejecutar el evento programado. Cancelar el trabajo programado también cancelará los trabajos que inició. En otras palabras, cancela toda la ejecución del cronograma.