Programovanie

Ako pracovať s Quartz.Net v C #

Pri práci na aplikáciách budete často musieť vykonávať určité úlohy na pozadí v preddefinovaných časových intervaloch. Plánovanie úloh v aplikáciách je výzvou a môžete si vybrať z mnohých dostupných rámcov v okolí, napríklad Quartz, Hangfire atď.

Quartz.Net sa používa už dlho a poskytuje lepšiu podporu pre prácu s výrazmi Cron. Hangfire je ešte ďalší rámec plánovača úloh, ktorý na spracovanie a vykonávanie úloh využíva potrubie spracovania žiadostí ASP.Net.

Quartz.Net je .Net port populárneho rámca plánovania úloh Java. Je to systém plánovania úloh s otvoreným zdrojovým kódom, ktorý je možné použiť od najmenších aplikácií až po rozsiahle podnikové systémy. Oficiálna webová stránka Quartz.Net uvádza: „Quartz.Net je plnohodnotný systém plánovania úloh s otvoreným zdrojovým kódom, ktorý je možné použiť od najmenších aplikácií po veľké podnikové systémy.“

Začíname

Quartz.Net môžete nainštalovať z časti na stiahnutie na oficiálnej webovej stránke Quartz. Quartz.Net môžete tiež nainštalovať prostredníctvom okna Správcu balíkov v prostredí Visual Studio IDE.

Tri primárne komponenty v Quartze sú úlohy, spúšťače a plánovače, t. J. Na vytváranie a plánovanie úloh v Quartz.Net by ste potrebovali plánovače, spúšťače a úlohy. Zatiaľ čo úloha označuje úlohu, ktorú je potrebné vykonať, pomocou spúšťača sa určuje, ako bude úloha vykonaná. Plánovač je komponent, ktorý naplánuje úlohy. Pamätajte, že by ste mali svoje úlohy a spúšťače zaregistrovať v plánovači.

Programovanie Quartz.Net v C #

Ak chcete vytvoriť pracovnú pozíciu, mali by ste vytvoriť triedu, ktorá implementuje rozhranie IJob. Toto rozhranie mimochodom deklaruje metódu Execute - túto metódu by ste mali implementovať do svojej vlastnej triedy úloh. Nasledujúci úryvok kódu ilustruje, ako môžete implementovať rozhranie IJob na návrh vlastnej triedy úloh pomocou knižnice Quartz.Net.

verejná trieda Práca: IJob

   {

public void Execute (kontext IJobExecutionContext)

       {

// Ukážkový kód, ktorý označuje úlohu, ktorá sa má vykonať

       }

   }

Tu je jednoduchá implementácia metódy Execute triedy Job - nechám na vás, aby ste si navrhli svoju vlastnú triedu úloh podľa potrieb vašej aplikácie. Fragment kódu uvedený nižšie zapíše aktuálnu hodnotu DateTime ako text do súboru. Upozorňujeme, že táto implementácia nie je bezpečná pre vlákna; slúži len na ilustráciu.

public void Execute (kontext IJobExecutionContext)

        {

pomocou (StreamWriter streamWriter = nový StreamWriter (@ "D: \ Log.txt", true))

            {

streamWriter.WriteLine (DateTime.Now.ToString ());

            }

        }

Teraz, keď ste už definovali triedu úloh, budete musieť vytvoriť svoju vlastnú triedu plánovača úloh a definovať spúšťač svojej úlohy. Spúšťač bude obsahovať metadáta úlohy ako výraz cron. Tento odkaz môžete navštíviť a vygenerovať výrazy cron.

Ako je to s naplánovaním úloh? Existuje však komponent nazývaný plánovač úloh, ktorý je zodpovedný za plánovanie vašich úloh. V zásade môžete využiť výhody plánovačov úloh na naplánovanie vykonania úloh. Nasledujúci zoznam kódov ilustruje, ako môžeme definovať spúšťač pre našu úlohu a potom úlohu a spúšťač zaregistrovať v plánovači úloh.

verejná trieda JobScheduler

   {

public static void Start ()

       {

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler ();

scheduler.Start ();

IJobDetail job = JobBuilder.Create (). Build ();

ITrigger trigger = TriggerBuilder.Create ()

.WithIdentity ("Úloha", "")

.WithCronSchedule ("0 0/1 * 1/1 *? *")

.StartAt (DateTime.UtcNow)

.WithPriority (1)

.Build ();

scheduler.ScheduleJob (job, trigger);

       }

   }

Prečítajte si zoznam kódov uvedený vyššie. Pri vytváraní inštancie spúšťača si všimnite, ako bol zadaný názov a skupina spúšťača. Keď je spúšťač pre úlohu definovaný a nakonfigurovaný pomocou potrebného výrazu cron, je spúšťač zaregistrovaný v plánovači úloh.

Môžete tiež vytvoriť spúšť, ktorá sa spúšťa každú sekundu a opakuje ju donekonečna. Tu je útržok kódu, ktorý ilustruje, ako môžete vytvoriť tento spúšťač.

ITrigger trigger = TriggerBuilder.Create ()

.WithIdentity ("Úloha", "")

.Začni teraz()

.WithSimpleSchedule (s => s

.WithIntervalInSeconds (10)

.RepeatForever ())

.Build ();

Na spustenie plánovača nie vždy potrebujete službu Windows. Ak používate webovú aplikáciu ASP.Net, môžete využiť udalosť Application_Start súboru Global.asax a potom zavolať metódu JobScheduler.Start (), ako je uvedené v útržku kódu nižšie.

verejná trieda Globálna: HttpApplication

   {

void Application_Start (odosielateľ objektu, EventArgs e)

       {

// Kód, ktorý sa spúšťa pri štarte aplikácie

JobScheduler.Start ();

       }

   }

Upozorňujeme, že JobScheduler je názov vlastnej triedy, ktorú sme navrhli skôr. Upozorňujeme, že program Quartz.Net môžete využiť aj na ukladanie úloh do trvalých úložísk, t. J. Úloh môžete tiež uchovať v databáze. Tu nájdete zoznam všetkých podporovaných obchodov s úlohami.

$config[zx-auto] not found$config[zx-overlay] not found