Programiranje

Kako delati s Quartz.Net v C #

Pri delu z aplikacijami boste pogosto morali izvajati določene naloge v ozadju v vnaprej določenih časovnih intervalih. Razporejanje delovnih mest v aplikacijah je izziv in izbirate lahko med številnimi razpoložljivimi okviri, na primer Quartz, Hangfire itd.

Quartz.Net je že dolgo v uporabi in nudi boljšo podporo za delo z izrazi Cron. Hangfire je še en okvir za načrtovanje opravil, ki izkorišča cevovod za obdelavo zahtev ASP.Net za obdelavo in izvajanje opravil.

Quartz.Net je vrata .Net priljubljenega okvira za razporejanje opravil Java. Gre za odprtokodni sistem razporejanja opravil, ki ga lahko uporabljamo od najmanjših aplikacij do velikih poslovnih sistemov. Na uradni spletni strani Quartz.Net piše: "Quartz.Net je odprtokodni sistem za razporejanje delovnih mest z vsemi funkcijami, ki ga lahko uporabljamo od najmanjših aplikacij do velikih poslovnih sistemov."

Kako začeti

Quartz.Net lahko namestite v razdelku za prenose na uradni spletni strani Quartz. Quartz.Net lahko namestite tudi skozi okno upravitelja paketov v vašem Visual Studio IDE.

Tri glavne komponente v Quartzu so opravila, sprožilci in načrtovalci, tj. Če želite ustvariti in razporejati delovna mesta v Quartz.Netu, bi morali imeti načrtovalce, sprožilce in opravila. Medtem ko opravilo označuje nalogo, ki jo je treba izvesti, se s sprožilcem določi, kako bo opravilo izvedeno. Načrtovalnik je komponenta, ki razporeja opravila. Upoštevajte, da morate svoja opravila in sprožilce registrirati pri načrtovalcu.

Programiranje Quartz.Net v jeziku C #

Če želite ustvariti opravilo, ustvarite razred, ki izvaja vmesnik IJob. Mimogrede, ta vmesnik izjavlja metodo Execute - to metodo morate uporabiti v svojem delovnem razredu po meri. Naslednji delček kode ponazarja, kako lahko z vmesnikom IJob oblikujete razred opravil po meri s pomočjo knjižnice Quartz.Net.

javni razred Delo: IJob

   {

public void Execute (kontekst IJobExecutionContext)

       {

// Vzorčna koda, ki označuje opravilo, ki ga je treba opraviti

       }

   }

Tu je preprosta izvedba metode Execute za razred Job - prepuščam vam, da oblikujete svoj delovni razred po meri, ki ustreza potrebam vaše aplikacije. Spodnji delček kode trenutno datoteko DateTime zapiše kot besedilo v datoteko. Upoštevajte, da ta izvedba ni varna za nit; samo za ponazoritev.

public void Execute (kontekst IJobExecutionContext)

        {

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

            {

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

            }

        }

Zdaj, ko ste že definirali razred opravil, boste morali ustvariti svoj razred razporejevalnika opravil in določiti sprožilec za svoje opravilo. Sprožilec bo vseboval metapodatke opravila kot izraz cron. To povezavo lahko obiščete, da ustvarite izraze cron.

Zdaj, kako je to, da so delovna mesta razporejena? No, obstaja komponenta, imenovana razporejevalnik opravil, ki je odgovorna za razporejanje vaših delovnih mest. V bistvu lahko izkoristite načrtovalce opravil, da razporedite svoja opravila za izvedbo. Naslednji seznam kode ponazarja, kako lahko določimo sprožilec za svoje opravilo in nato opravilo in sprožilec registriramo pri načrtovalniku opravil.

javni razred JobScheduler

   {

javna statična void Začetek ()

       {

Načrtovalec IScheduler = StdSchedulerFactory.GetDefaultScheduler ();

razporejevalnik.Start ();

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

Sprožilec ITrigger = TriggerBuilder.Create ()

.WithIdentity ("Job", "")

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

.StartAt (DateTime.UtcNow)

.Priority (1)

.Build ();

scheduler.ScheduleJob (opravilo, sprožilec);

       }

   }

Glejte zgornji seznam kod. Upoštevajte, kako sta bila pri ustvarjanju primerka sprožilca podana ime in skupina sprožilca. Ko je sprožilec opravila definiran in konfiguriran s potrebnim izrazom cron, se sprožilec registrira pri načrtovalniku opravil.

Lahko tudi sestavite sprožilec, ki se sproži vsako sekundo in ga ponavlja v nedogled. Tu je delček kode, ki ponazarja, kako lahko sestavite sprožilec, kot je ta.

Sprožilec ITrigger = TriggerBuilder.Create ()

.WithIdentity ("Job", "")

.Začni zdaj()

.SSimpleSchedule (s => s

.WithIntervalInSeconds (10)

.RepeatForever ())

.Build ();

Za zagon razporejevalnika ne potrebujete vedno storitve Windows. Če uporabljate spletno aplikacijo ASP.Net, lahko izkoristite dogodek Application_Start datoteke Global.asax in nato pokličete metodo JobScheduler.Start (), kot je prikazano v spodnjem delčku kode.

javni razred Global: HttpApplication

   {

void Application_Start (pošiljatelj predmeta, EventArgs e)

       {

// Koda, ki se zažene ob zagonu aplikacije

JobScheduler.Start ();

       }

   }

Upoštevajte, da je JobScheduler ime razreda po meri, ki smo ga oblikovali prej. Upoštevajte, da lahko Quartz.Net izkoristite tudi za shranjevanje svojih delovnih mest v trajne shrambe, torej lahko svoja dela ohranite tudi v zbirki podatkov. Tukaj lahko poznate seznam vseh podprtih trgovin z opravili.

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