Mandatos de controlador de larga ejecución

Si un mandato de controlador va a tardar mucho en ejecutarse, puede dividirlo en dos mandatos. El primer mandato, que se ejecuta como resultado de una petición de URL, simplemente añade el segundo mandato al Planificador, para que se ejecute como un trabajo en segundo plano.

Diagrama que ilustra el flujo entre ControllerCommand1, Scheduler y ControllerCommand2 descrito en el párrafo siguiente.

El flujo que se muestra en el diagrama anterior es el siguiente:

  1. El MandatoControlador1 se ejecuta como resultado de una petición de URL.
  2. El MandatoControlador1 añade un trabajo al Planificador. El trabajo es MandatoControlador2. El MandatoControlador1 devuelve una vista inmediatamente después de añadir el trabajo al Planificador.
  3. El Planificador ejecuta el MandatoControlador2 como un trabajo en segundo plano.

En este escenario, el cliente normalmente sondea el resultado de MandatoControlador2. El MandatoControlador2 debería grabar el estado del trabajo en la base de datos.