Servizio Windows o Utilità di pianificazione di Windows?


10

Sto progettando di creare un'utilità, che interrogherà il database e memorizzerà alcune informazioni (su un'altra tabella nel database). È un'utilità multi-thread e richiede di essere eseguita ogni 5 o 10 minuti / dopo potrebbe essere tre volte in un giorno.

Vedo due opzioni per raggiungere questo obiettivo nella programmazione C # / DotNet.

  • creando un servizio windows con un approccio timer al suo interno.
  • un programma console e pianificarlo utilizzando l'utilità di pianificazione di Windows.

Quale preferisci e perché?


3
Penso che questa domanda sia più adatta per SO
Naveen,

1
Davvero, questa è una buona domanda di progettazione del software e probabilmente avrai almeno cinque buone risposte in cinque ore dopo averlo fatto su SO.
sharptooth,

1
Ho votato per chiudere, questo in realtà appartiene a SO
Jaco Pretorius,

2
Questa domanda suscita una discussione soggettiva e / o estesa sui meriti di entrambi. È molto sull'argomento qui e soggettivo e argomentativo lì.

2
Non sono sicuro, penso all'ultima frase "Quale preferisci e perché?" innescerebbe i robot ravvicinati laggiù. È meglio qui poiché le risposte reali possono essere
ottenute

Risposte:


2

Commenti di un mio collega di ieri su questo stesso argomento

"Ci sarà sempre un'opinione variegata su questo ... La mia regola empirica sarebbe se avessi bisogno di qualcosa che corre ogni cinque minuti (e non ti interessa a che ora corre o quanto dura una corsa) o qualcosa che risponde agli eventi, utilizza un servizio. Se hai bisogno di eseguire qualcosa ogni giorno in una determinata ora e sei sicuro che non ci sarà un over-lap, usa lo Scheduler fornito con il sistema operativo. Se hai bisogno di un ibrido, usa entrambi soluzioni per i vari casi o trovare qualcosa dallo scaffale. (Forse Quartz .Net) "

L'articolo di Jon Galloway del 2005 "// TODONT: utilizzare un servizio Windows solo per eseguire un processo pianificato" è una buona lettura. Suggerisco che i commenti vengano letti anche perché la discussione continua ancora fino ad oggi e fornisce anche buoni argomenti contrari.

Personalmente, sono d'accordo con il mio collega su questo. Mantienilo semplice il più a lungo possibile. E se si esegue la distribuzione sul server Win2008, consultare l'Utilità di pianificazione e tutte le funzionalità offerte dall'Utilità di pianificazione standard. Per me, il killer doveva iniziare un'attività pianificata quando si verifica un evento.


4

I servizi vengono utilizzati a fini amministrativi o per offrire un servizio a più applicazioni.

Le pianificazioni vengono utilizzate per eseguire un'attività più volte che non richiedono necessariamente autorizzazioni aggiuntive.


3

Ho sentito gli argomenti per l'utilizzo di Windows Scheduler ma ho sempre optato per la scrittura della mia app come servizio. All'inizio ho pensato che sarebbe stata una soluzione migliore in un ambiente cluster, ma non è proprio vero. La linea di fondo è che non avevo una buona ragione se non quella di "sentirmi" come un design migliore.


0

perché non provi Quartz.net l'
ho usato una volta e posso dire che è un potente framework per creare il tuo scheduler e fornisce un servizio pre-costruito che eseguirà il tuo lavoro programmato (memorizzato nel database o semplicemente in un file XML ) http://quartznet.sourceforge.net/


2
-1 Questo non risponde affatto alla domanda e si adatterebbe meglio come commento.
Tamara Wijsman,

0

Se si desidera che l'utente abbia un maggiore controllo senza che sia necessario crearlo, utilizzare l'Utilità di pianificazione. Sembra che Google lo faccia con l'aggiornamento delle sue app. A seconda dell'utente, non è difficile gestire l'attività. Porta l'utente fuori dal giro e crea un servizio. La maggior parte delle persone non li toccherà mai.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.