Programavimas

Kaip dirbti su „Quartz.Net“ C #

Dirbdami su programomis, dažnai turėsite atlikti tam tikras užduotis fone iš anksto nustatytais laiko intervalais. Darbų planavimas programose yra iššūkis, ir jūs galite pasirinkti iš daugelio galimų sistemų, tokių kaip „Quartz“, „Hangfire“ ir kt.

„Quartz.Net“ buvo naudojamas ilgą laiką ir suteikia geresnę paramą dirbant su „Cron“ išraiškomis. „Hangfire“ yra dar viena darbo planavimo programa, kuri naudojasi ASP.Net užklausų apdorojimo vamzdynais, kad apdorotų ir vykdytų užduotis.

„Quartz.Net“ yra populiariosios „Java“ darbų planavimo sistemos .Net prievadas. Tai atvirojo kodo darbo planavimo sistema, kurią galima naudoti nuo mažiausių programų iki didelio masto įmonių sistemų. Oficialioje „Quartz.Net“ svetainėje rašoma: „Quartz.Net yra visavertė, atviro kodo darbo planavimo sistema, kurią galima naudoti nuo mažiausių programų iki didelio masto įmonių sistemų“.

Darbo pradžia

„Quartz.Net“ galite įdiegti oficialios „Quartz“ svetainės atsisiuntimų skyriuje. „Quartz.Net“ taip pat galite įdiegti per „Visual Studio IDE“ langą „Package Manager“.

Trys pagrindiniai kvarco komponentai yra užduotys, paleidikliai ir planavimo priemonės, t. Y. Norint sukurti ir planuoti darbo vietas kvarce. Nors užduotis žymi užduotį, kurią reikia atlikti, aktyviklis naudojamas nurodyti, kaip darbas bus vykdomas. Tvarkaraštis yra komponentas, kuris suplanuoja darbus. Atminkite, kad turėtumėte užregistruoti savo darbus ir aktyviklius planuoklyje.

„Quartz.Net“ programavimas C #

Norėdami sukurti darbą, turėtumėte sukurti klasę, įdiegiančią „IJob“ sąsają. Beje, ši sąsaja deklaruoja „Execute“ metodą - šį metodą turėtumėte įdiegti savo pasirinktoje darbo klasėje. Šis kodo fragmentas parodo, kaip galite įdiegti „IJob“ sąsają kuriant pasirinktinę darbo klasę naudojant „Quartz.Net“ biblioteką.

visuomenės klasė Darbas: IJobas

   {

public void Vykdyti („IJobExecutionContext“ kontekstas)

       {

// Kodo pavyzdys, žymintis atliktiną darbą

       }

   }

Štai paprastas darbo klasės „Execute“ metodo įgyvendinimas - paliksiu jums susikurti savo pasirinktą darbo klasę, kad ji atitiktų jūsų programos poreikius. Žemiau pateiktas kodo fragmentas įrašo dabartinę „DateTime“ vertę kaip tekstą į failą. Atminkite, kad šis diegimas nėra saugus siūlams; tai tik iliustracijos tikslais.

public void Vykdyti („IJobExecutionContext“ kontekstas)

        {

naudojant (StreamWriter streamWriter = new StreamWriter (@ "D: \ Log.txt", tiesa))

            {

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

            }

        }

Dabar, kai jau apibrėžėte darbo klasę, turėsite sukurti savo darbo planuotojo klasę ir apibrėžti savo darbo aktyviklį. Trigeryje bus darbo metaduomenys kaip cron išraiška. Norėdami sukurti „cron“ išraiškas, galite apsilankyti šioje nuorodoje.

Dabar kaip planuojami darbai? Na, yra komponentas, vadinamas darbo planuotoju, kuris yra atsakingas už jūsų darbų planavimą. Iš esmės galite pasinaudoti darbų planuotojų pranašumais, kad suplanuotumėte savo darbus vykdyti. Šis kodų sąrašas parodo, kaip mes galime apibrėžti savo darbo aktyviklį ir tada užregistruoti darbą ir aktyviklį naudodami darbo planavimo priemonę.

visuomenės klasės „JobScheduler“

   {

vieša statinė tuštuma Pradėti ()

       {

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler ();

planuoklis.Pradėti ();

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

„ITrigger trigger“ = „TriggerBuilder.Create“ (

.WithIdentity („darbas“, „“)

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

.StartAt (DateTime.UtcNow)

.WithPriority (1)

.Pastatykite ();

tvarkaraštis.ScheduleJob (darbas, aktyviklis);

       }

   }

Žr. Aukščiau pateiktą kodų sąrašą. Atkreipkite dėmesį, kaip kuriant aktyviklio egzempliorių buvo nurodytas aktyviklio pavadinimas ir grupė. Apibrėžus ir sukonfigūravus užduoties aktyviklį naudojant reikiamą „cron“ išraišką, aktyviklis užregistruojamas darbo planavimo programoje.

Taip pat galite sukurti trigerį, kuris paleidžiamas kas sekundę ir kartoja jį neribotą laiką. Štai kodo fragmentas, parodantis, kaip galite sukurti tokį aktyviklį.

„ITrigger trigger“ = „TriggerBuilder.Create“ (

.WithIdentity („darbas“, „“)

.Pradėk dabar()

.SimpleSchedule (s => s

.WithIntervalInSeconds (10)

.RepeatForever ())

.Pastatykite ();

Norėdami paleisti tvarkaraštį, jums ne visada reikia „Windows“ paslaugos. Jei naudojate ASP.Net žiniatinklio programą, galite pasinaudoti Global.asax failo „Application_Start“ įvykio pranašumais ir paskambinti metodui „JobScheduler.Start ()“, kaip parodyta toliau pateiktame kodo fragmente.

viešoji klasė Global: HttpApplication

   {

negaliojantis „Application_Start“ (objekto siuntėjas, „EventArgs e“)

       {

// Kodas, vykdomas paleidus programą

„JobScheduler.Start“ ();

       }

   }

Atminkite, kad „JobScheduler“ yra anksčiau sukurtos pasirinktinės klasės pavadinimas. Atminkite, kad taip pat galite panaudoti „Quartz.Net“, kad išsaugotumėte savo darbus nuolatinėse saugyklose, t. Y. Galite išsaugoti savo užduotis ir duomenų bazėje. Čia galite sužinoti visų palaikomų darbo parduotuvių sąrašą.