2010-05-11 8 views
8

Tengo que crear una aplicación que leerá información de una base de datos, procesará los datos, escribirá los cambios en la base de datos y luego enviará un correo electrónico con estos cambios a algunos usuarios o grupos. Escribiré esto en C#, y este proceso se debe ejecutar una vez a la semana en un momento determinado. Esto se ejecutará en un servidor de Windows 2008.tarea programada o servicio de Windows

En el pasado, siempre iba por la ruta de crear un servicio de Windows con un temporizador y estableciendo la hora/día para que se ejecute en el archivo app.config para que se pueda cambiar y solo tenga que ser reiniciado para atrapar la actualización.

Recientemente, sin embargo, he visto publicaciones en blogs y tales que recomiendan escribir una aplicación de consola y luego usar una tarea programada para ejecutarla.

He leído muchos mensajes que hablan de este mismo tema, pero no he visto una respuesta definitiva sobre qué proceso es mejor.

¿Qué piensan algunos de ustedes?

Gracias por cualquier idea.

Respuesta

14

Si se trata de una aplicación de una semana, ¿por qué perder los recursos para que se ejecute en segundo plano durante el resto de la semana.

Una aplicación de consola parece mucho más apropiada.

La regla general que uso es algo en esta línea. Primero hago algunas preguntas.

  1. Frecuencia de ejecución
  2. frecuencia de los cambios a # 1
  3. mecanismo de activación

Básicamente desde aquí si la frecuencia de ejecución es diaria o menos frecuente que casi siempre te inclinan hacia una tarea programada. Luego, mirando la frecuencia de los cambios, si hay una gran demanda de cambios en el cronograma, también intentaré inclinarme hacia las tareas programadas, para permitir cambios sin codificación para los cambios de programación. por último, si alguna vez se piensa en un desencadenante que no sea el tiempo, entonces me inclinaré hacia los servicios de Windows para ayudar a una aplicación "a prueba de futuro". Digamos, por ejemplo, que los cambios de requisitos deben ejecutarse cada vez que un usuario suelta un archivo en la carpeta X.

+0

Estoy de acuerdo con el uso de los recursos del servidor. Creo que esta es la dirección que tomaré. Gracias – czuroski

3

Si solo tiene una aplicación y necesita ejecutarla una vez por semana, el planificador será bueno ya que no es necesario tener un servicio separado y un proceso en ejecución en el sistema que estará inactivo la mayor parte del tiempo.

6

La regla básica que sigo es: si necesita ejecutar continuamente porque los eventos de interés pueden suceder en cualquier momento, use un servicio (o daemon en UNIX).

Si solo desea hacer algo periódicamente, use una tarea programada (o cron).

El clincher aquí es su frase "must be run once a week at a particular time" - vaya para una tarea programada.

+0

Eso es lo que pensé. Como había estado leyendo los mensajes, esa era la sensación que tenía de hacer esto. Voy a darle una oportunidad. Gracias – czuroski

Cuestiones relacionadas