Uno Scheduler rispetto a molti Scheduler

5

Ho usato un unico programma di pianificazione per gestire tutte le mie attività pianificate (Quartz.Net). Sto iniziando a ripensare a come funziona, perché se devo aggiornare 1 attività, devo interrompere l'intero processo, rilasciare l'aggiornamento e riavviarlo.

La mia domanda: è meglio avere molti servizi di Windows che eseguono singole attività (o gruppi di attività simili) o 1 servizio che esegue tutte le attività (la mia attuale configurazione)?

    
posta MattB 02.08.2013 - 18:13
fonte

2 risposte

1

Ho recentemente trascorso un po 'di tempo con Quartz.NET e posso condividere alcune delle esperienze che abbiamo avuto. Il mio scenario copriva un singolo processo (servizio Windows) che era responsabile dell'aggiornamento della pianificazione esistente (utilizzando i dettagli scaricati come XML da un server). Il processo del servizio copriva anche la maggior parte delle funzionalità che potevano essere attivate.

Penso che il fattore chiave qui sia ciò che intendi per "aggiornare" un compito. Intendi semplicemente modificare i dettagli della pianificazione (quali attività eseguire, quando eseguirle ecc.) O i binari reali coinvolti nell'esecuzione dell'attività? Se ti aspetti aggiornamenti frequenti di binari e funzioni, probabilmente un singolo modello monolitico non è adatto a te. Se ti aspetti aggiornamenti frequenti su quando e quale attività deve essere eseguita, vale la pena centralizzare la gestione delle attività e la pianificazione.

I gruppi di trigger funzionano bene per dividere e gestire vari tipi di lavoro. Questo rende il CRUD contro il programma in memoria molto più pulito. Ad esempio, puoi ottenere tutti i lavori in un gruppo abbastanza facilmente

    
risposta data 19.08.2013 - 07:34
fonte
0

Non ho mai usato Quartz.NET, ma pensavo che fosse impostato per consentire di modificare le configurazioni del lavoro semplicemente modificando un file di configurazione e / o rilasciando una nuova DLL, e le modifiche sarebbero immediatamente rilevate.

Se non è così, allora qualcosa del genere mi sembra un buon approccio. Ad esempio, puoi avere una DLL separata per ogni lavoro, con una classe che implementa un'interfaccia comune. Quando è pianificato un lavoro, caricare dinamicamente la DLL, utilizzare la reflection per recuperare un'istanza del lavoro ed eseguirla. Quindi, se hai bisogno di cambiare lavoro, devi semplicemente inserire una nuova DLL, e la prossima volta che lo preleverà sarà il nuovo codice.

    
risposta data 08.08.2013 - 17:56
fonte

Leggi altre domande sui tag