2009-04-06 9 views
5

Ho un po 'di codice che deve essere installato su una macchina Windows Server 2003 ed essere eseguito ogni minuto.Quanto è affidabile l'utilità di pianificazione di Windows per la programmazione del codice da eseguire ripetutamente?

Qual è il modo consigliato di gestirlo? Va bene progettarlo come un servizio di console e basta che il programmatore di attività lo colpisca in ogni momento? (è anche possibile?) Devo solo succhiarlo e scriverlo come un servizio di Windows?

risposta

12

Poiché è necessario eseguire ogni singolo minuto, suggerirei di scrivere un servizio di Windows. Non è molto complicato, e se non lo hai mai fatto prima, sarebbe bello per te imparare come è fatto.

Chiamare l'attività pianificata ogni minuto non è qualcosa che consiglierei.

+0

Perché si consiglia il servizio Windows invece di Utilità di pianificazione se viene eseguito ogni singolo minuto? Cosa ti fa andare per quell'opzione? –

4

Direi di succhiare e scriverlo come servizio di Windows. Non ho trovato che le attività pianificate siano molto affidabili e quando non è in esecuzione, devo ancora trovare un modo semplice per scoprire perché non lo è stato.

+2

Il registro eventi dovrebbe indicare perché non è stato. –

+1

@jeffamaphone "dovrebbe" è la parola chiave. Ho anche trovato le attività programmate inaffidabili, spesso senza lasciare traccia di un tentativo di esecuzione nel registro eventi. –

2

se è necessario eseguirlo ogni minuto, lo svilupperei come servizio di Windows. Non userei lo scheduler per qualcosa di meno di un compito quotidiano.

2

Direi che dipende da cosa stava facendo, ma in generale sono sempre favorevole ad avere il minor numero di strati. Se lo scrivi come servizio di console e utilizzi il programma di pianificazione delle attività, hai due punti in cui mantenere in futuro.

Se lo scrivi come servizio di Windows, hai solo un numero inferiore di posti da controllare nel caso qualcosa vada storto.

0

Sono d'accordo, è un po 'uno spreco di sforzi per creare anche un eseguibile della console e programmarlo per essere eseguito ogni minuto. Suggerirei di esplorare qualcosa come Quartz.Net. In questo modo è possibile creare un lavoro semplice e pianificarlo per l'esecuzione ogni minuto.

+1

Sembra che tu sia contro l'idea di pianificare un'attività da eseguire ogni minuto ... ma l'idea è di farlo tramite Quartz.Net? Mi sto perdendo qualcosa? –

1

L'unico altro punto da considerare, è che se il tuo lavoro implica una qualche tipo di interazione con il database, considera di esaminare i servizi di integrazione/pianificazione forniti dal tuo database.

Ad esempio, la creazione di un pacchetto SSIS per il servizio relativo a SQL Server può sembrare un po 'eccessivo, ma può essere integrata perfettamente con l'ambiente e avrà i propri meccanismi di registrazione/controllo degli errori già in atto.

3

Windows Scheduled Tasks è stato abbastanza affidabile per i nostri scopi e li avvantaggiamo in quasi tutti i casi su Windows Services a causa della loro facilità di installazione e funzionalità avanzate di ripristino. La natura sempre presente di un servizio Windows potrebbe diventare un problema se una parte del codice che è stata scritta finisce per essere bloccata o inserita in un pezzo di codice che non dovrebbe essere inserito. Generalmente scriviamo il nostro codice in un modo simile a questo

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

Poi come parte dell'operazione pianificata abbiamo messo un limite di tempo su quanto tempo il processo può essere eseguito e farlo uccidere il processo se funziona più a lungo. Se abbiamo un pezzo di codice che sta avendo problemi, Scheduled Tasks lo ucciderà e il processo si avvierà nel minuto successivo.

2

Durante la ricerca di assistenza di servizio pianificata, mi sono imbattuto in un ottimo article by Jon Galloway.

Ci sono vari diadvantages se un servizio di Windows viene utilizzato per l'attività pianificata. Sono d'accordo con questo. Suggerirei di utilizzare Attività pianificata, semplice nell'implementazione. Si prega di fare riferimento a detailed information of implementing the task scheduler. Spero che questa informazione aiuti a finalizzare l'approccio di implementazione.

Problemi correlati