Saltar al contenido

Servicios en Segundo Plano

Descripción General

El App Builder la función Servicios en segundo plano permite App Builder para ejecutar eventos de larga duración en una cola en segundo plano limitada. El servicio en sí está alojado por el App Builder aplicación web en IIS. Mientras el sitio web esté en funcionamiento, el servicio en segundo plano también lo estará. No requiere ninguna instalación o configuración adicional.

Hay dos componentes involucrados en la App Builder servicio de antecedentes:

Cola de Fondo

A menudo, un desarrollador crea un evento que realiza varias acciones, posiblemente abarcando varias fuentes de datos o incluso llamadas REST a sistemas externos. La cola en segundo plano permite al desarrollador especificar que el evento se debe ejecutar en segundo plano en lugar de en primer plano. Hacer esto tiene algunas ventajas:

  • 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, ocuparían recursos, el desarrollador permite App Builder para limitar la ejecución de esos eventos. A medida que aumenta la carga del sistema, se reduce el nivel de paralelismo de la cola de trabajos. Esto permite que el servidor web funcione 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 gestionar 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 de veces de manera simultánea, lo que libera recursos para el sitio web.
  • La cola en segundo plano supervisa los 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 ejecutó 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 eventos o cronogramas en ejecución.

Nota

El servicio en segundo plano recorta las tablas de registro todos los días. Elimina todos los eventos exitosos con más de 7 días de antigüedad y todos los eventos fallidos con más de 30 días de antigüedad.

Para especificar que un evento se debe ejecutar en segundo plano, el desarrollador debe ubicar el evento, hacer doble clic en él, editarlo y seleccionar un tipo de ejecución de Iniciar ahora (en segundo plano). A partir de ese momento, App Builder 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, App Builder devolverá los resultados inmediatamente al usuario junto con los mensajes de validación y cancelará la ejecución del evento en la cola. Advertencia: no se admiten validaciones 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.

El App Builder la cola de trabajos permanece inactiva indefinidamente y utiliza recursos mínimos hasta que se pone en cola un evento. No sondea los trabajos que se van a ejecutar. En su lugar, utiliza el patrón asincrónico basado en tareas de Microsoft, lo que garantiza que se utilicen por completo los recursos del sistema.

Programador

App Builder 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 esté ejecutando la aplicación web. App Builder actualmente, se admite un modo de ejecución para un evento programado, denominado ejecución de varias filas. Esto es diferente de 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 programador 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.

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

Para programar un evento para su ejecución, ubique el evento, haga doble clic en él y configure el tipo de ejecución en Iniciar mediante programación (en segundo plano). Esto permitirá que el evento se adjunte a una programación.

Para crear una programación, vaya a la sección Monitoreo en el IDE. Haga clic en Programaciones y cree una nueva programación.

A continuación, se muestran los tipos de programaciones App Builder admite:

  • Ejecución única: elija un día y una hora en el futuro para que se ejecute el evento. App Builder 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. Puede configurarse 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 cantidad de semanas. En este cronograma, el desarrollador puede elegir días específicos de la semana para ejecutar el evento. Por ejemplo, ejecutarlo 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 concurrencia máxima y el ID de usuario que ejecutará el evento. Si el objeto comercial Evento devuelve varias filas, App Builder intentará ejecutar el evento en cada fila con la concurrencia especificada. Por ejemplo, si el objeto comercial devuelve 100 filas y la concurrencia máxima es 3, App Builder 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 o iniciar el servicio en segundo plano y supervisar 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 agota todos los trabajos que se están ejecutando actualmente para finalizar y cancela cualquier trabajo en cola que esté saliendo. También detiene la puesta en cola de cualquier evento programado o invocado.

  • Iniciar reinicia el servicio en segundo plano, borra la tabla de actividades y comienza la programación y el soporte de eventos 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 de 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 de servicio que se está ejecutando actualmente.
  • Disponible en la página Instancias de servicio

Cancelación de un Trabajo

Cómo App Builder la forma en que se cancela un trabajo varía según el estado del trabajo y el tipo de trabajo que se está ejecutando.

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