2009-04-06 20 views
5

Tengo un poco de código que necesita ubicarse en una máquina con Windows Server 2003 y se ejecuta cada minuto.¿Cuán confiable es el programador de tareas de Windows para programar el código para que se ejecute repetidamente?

¿Cuál es la forma recomendada de manejar esto? ¿Está bien diseñarlo como un servicio de consola y simplemente hacer que el planificador de tareas lo golpee cada minuto? (¿Es eso posible?) ¿Debo aspirar y escribirlo como un servicio de Windows?

Respuesta

12

Como necesita ejecutarse cada minuto, sugiero que escriba un Servicio de Windows. No es muy complicado, y si nunca lo hiciste antes, sería genial que aprendas cómo se hace.

Llamar a la tarea programada cada minuto no es algo que recomendaría.

+0

¿Por qué recomienda el servicio de Windows en lugar del planificador de tareas si se ejecuta en cada minuto? ¿Qué te hace ir por esa opción? –

4

Yo diría que lo aspire y lo escriba como un servicio de Windows. No he encontrado tareas programadas para ser muy confiable y cuando no se ejecuta, todavía tengo que encontrar una manera fácil de descubrir por qué no lo ha hecho.

+2

El registro de eventos debe indicar por qué no lo ha hecho. –

+1

@jeffamaphone "should" es la palabra clave. También he encontrado que las tareas programadas no son confiables, a menudo no dejan rastro de un intento de ejecución en el registro de eventos. –

2

si necesita que se ejecute cada minuto, lo construiría como un servicio de Windows. No utilizaría el programador para nada menos que una tarea diaria.

2

Yo diría que depende de lo que estaba haciendo, pero en general siempre estoy a favor de tener la menor cantidad de capas. Si lo escribe como un servicio de consola y utiliza el programador de tareas, entonces tiene dos lugares para mantener en el futuro.

Si lo escribe como un servicio de Windows, entonces solo tiene un lugar menos para verificar en caso de que algo salga mal.

0

Estoy de acuerdo, es una pérdida de esfuerzo crear incluso un ejecutable de consola y programarlo para que se ejecute cada minuto. Sugiero explorar algo como Quartz.Net. De esta forma, puede crear un trabajo simple y programarlo para que se ejecute cada minuto.

+1

Parece que está en contra de la idea de programar una tarea para ejecutar cada minuto ... ¿pero la idea es hacerlo a través de Quartz.Net? ¿Me estoy perdiendo de algo? –

1

El único otro punto a considerar, es que si su trabajo implica algún tipo de interacción con la base de datos, considere investigar los servicios de integración/programación provistos por su base de datos.

Por ejemplo, crear un paquete SSIS para su servicio relacionado con SQL Server puede parecer un poco exagerado, pero puede integrarse bien con el entorno y tendrá sus propios mecanismos de registro/comprobación de errores ya implementados.

3

Las Tareas Programadas de Windows han sido bastante confiables para nuestros propósitos y las preferimos en casi todos los casos a los Servicios de Windows debido a su facilidad de instalación y características avanzadas de recuperación. La naturaleza siempre activa de un servicio de Windows podría terminar siendo un problema si una parte del código que se escribió termina cerrándose o bloqueándose en un código en el que no debería estar. Generalmente escribimos nuestro código en una de manera similar a este

Init(); 
Run(); 
CleanUp(); 

a continuación, como parte de la tarea programada que poner un límite de tiempo para la duración del proceso puede ejecutar y haga que sea matar el proceso si se ejecuta durante más tiempo. Si tenemos un trozo de código que está teniendo problemas, las Tareas programadas lo matarán y el proceso se iniciará en el próximo minuto.

2

Mientras buscaba ayuda de servicio programada, encontré una muy buena article by Jon Galloway.

Existen varias ventajas si se utiliza un servicio de Windows para la tarea programada. Estoy de acuerdo con eso. Sugeriría usar Tarea programada, simple en la implementación. Por favor, consulte detailed information of implementing the task scheduler. Espero que esta información ayude a finalizar el enfoque de implementación.

Cuestiones relacionadas