Servicio de Windows o Programador de tareas de Windows?

10

Estoy planeando crear una utilidad, que consultará la base de datos y almacenará cierta información (en otra tabla de la base de datos). Es una utilidad de subprocesos múltiples y debe ejecutarse cada 5 o 10 minutos / más tarde puede ser tres veces en un día.

Veo dos opciones para lograr esto en la programación C # / DotNet.

  • creando el servicio de Windows con un enfoque de temporizador dentro de él.
  • un programa de consola y programarlo usando el programador de tareas de Windows.

¿Cual prefieres y porque?

Pavan GR
fuente
3
Creo que esta pregunta es más adecuada para SO
Naveen
1
Realmente, esa es una buena pregunta de diseño de software y es probable que tenga al menos cinco buenas respuestas en cinco horas una vez que lo haga en SO.
Sharptooth
1
He votado para cerrar, esto en realidad pertenece a SO
Jaco Pretorius el
2
Esta pregunta provoca una discusión subjetiva y / o extendida sobre los méritos de cualquiera de ellos. Está muy relacionado con el tema aquí y subjetivo y argumentativo allí.
2
No estoy seguro, creo que la última oración "¿Cuál prefieres y por qué?" activaría los bots cercanos por allí. Es mejor aquí, ya que las respuestas reales se pueden obtener aquí
TheLQ

Respuestas:

2

Comentarios de un colega mío de ayer sobre este mismo tema

"Siempre habrá una opinión variada sobre esto ... Mi regla general sería si necesita algo que se ejecuta cada cinco minutos (y no le importa a qué hora se ejecuta o cuánto dura una carrera) o algo que responde a eventos, usa un servicio. Si necesitas ejecutar algo a una hora en particular cada día y estás seguro de que no habrá una vuelta, usa el Programador provisto con el sistema operativo. Si necesitas un híbrido, usa ambos soluciones para los diferentes casos o encontrar algo fuera de la plataforma. (Posiblemente Quartz .Net) "

El artículo de Jon Galloway de 2005 "// TODONT: Use un servicio de Windows solo para ejecutar un proceso programado" es una buena lectura. Sugiero que los comentarios también se lean porque la discusión aún continúa hasta hoy y que también proporcione algunos buenos contraargumentos.

Personalmente, estoy de acuerdo con mi colega en este caso. Mantenlo simple por el mayor tiempo posible. Y si está implementando en el servidor Win2008, consulte el Programador de tareas y todas las características que ofrece el programador estándar. Para mí, el asesino debía comenzar una tarea programada cuando ocurre un evento.

Ahmad
fuente
4

Los servicios se utilizan con fines administrativos o para ofrecer un servicio a múltiples aplicaciones.

Las programaciones se utilizan para ejecutar una tarea varias veces que no requieren necesariamente permisos adicionales.

Tamara Wijsman
fuente
3

He escuchado los argumentos para usar el Programador de Windows, pero siempre he optado por escribir mi aplicación como un servicio. Al principio pensé que sería una mejor solución en un entorno agrupado, pero eso no es realmente cierto. La conclusión es que no tenía una buena razón más que "sentir" como un mejor diseño.

Walter
fuente
0

¿Por qué no prueba Quartz.net? Lo
usé una vez y puedo decir que es un marco poderoso para crear su propio programador, y proporciona un Servicio preconstruido que ejecutará su Trabajo programado (almacenado en la base de datos o simplemente en un archivo XML ) http://quartznet.sourceforge.net/

aleo
fuente
2
-1 Esto no responde a la pregunta en absoluto y encajaría mejor como comentario.
Tamara Wijsman
0

Si desea que el usuario tenga más control sin que tenga que construirlo, use el Programador de tareas. Parece que Google hace esto con la actualización de sus aplicaciones. Dependiendo del usuario, no es difícil administrar la tarea. Saque al usuario del bucle y cree un servicio. La mayoría de la gente nunca los tocará.

JeffO
fuente