Ohjelmointi

Kuinka työskennellä Quartz.Netin kanssa C #: ssä

Kun työskentelet sovellusten parissa, sinun on usein suoritettava tietyt tehtävät taustalla ennalta määrätyin aikavälein. Työn ajoitus sovelluksissa on haaste, ja voit valita monista käytettävissä olevista kehyksistä, kuten Quartz, Hangfire jne.

Quartz.Net on ollut käytössä pitkään ja tarjoaa paremman tuen työskennellä Cron-lausekkeiden kanssa. Hangfire on jälleen yksi työn ajoituskehys, joka hyödyntää ASP.Net-palvelun pyyntöjen käsittelyputkea töiden käsittelemiseksi ja suorittamiseksi.

Quartz.Net on .Net-portti suositusta Java-työn aikataulutuskehyksestä. Se on avoimen lähdekoodin työn ajoitusjärjestelmä, jota voidaan käyttää pienimmistä sovelluksista suuriin yritysjärjestelmiin. Quartz.Netin virallisella verkkosivustolla todetaan: "Quartz.Net on monipuolinen, avoimen lähdekoodin työn ajoitusjärjestelmä, jota voidaan käyttää pienimmistä sovelluksista suuriin yritysjärjestelmiin."

Päästä alkuun

Voit asentaa Quartz.Netin Quartzin virallisen verkkosivuston lataukset-osiosta. Voit myös asentaa Quartz.Net-sovelluksen Visual Studio IDE: n Paketinhallinta-ikkunan kautta.

Kvartsin kolme pääkomponenttia ovat työt, laukaisimet ja aikataulut, ts. Työpaikkojen luomiseen ja aikatauluttamiseen Quartz.Netissä tarvitset aikataulut, laukaisimet ja työpaikat. Vaikka työ merkitsee suoritettavaa tehtävää, liipaisinta käytetään määrittämään, miten työ suoritetaan. Ajastin on komponentti, joka ajoittaa työt. Huomaa, että sinun tulisi rekisteröidä työt ja laukaisimet ajastimelle.

Quartz.Netin ohjelmointi C #: ssä

Työn luomiseksi sinun on luotava luokka, joka toteuttaa IJob-käyttöliittymän. Muuten, tämä käyttöliittymä julistaa Execute-menetelmän - sinun tulisi ottaa tämä menetelmä käyttöön omassa työluokassasi. Seuraava koodinpätkä kuvaa, kuinka voit toteuttaa IJob-käyttöliittymän suunnitellaksesi mukautetun työluokan Quartz.Net-kirjaston avulla.

julkinen luokka Job: IJob

   {

public void Suorita (IJobExecutionContext-konteksti)

       {

// Esimerkkikoodi, joka ilmaisee suoritettavan työn

       }

   }

Tässä on yksinkertainen Execute-menetelmän toteutus Job-luokassa - jätän sinun suunnitella mukautetun työluokan sovelluksesi tarpeiden mukaan. Alla annettu koodinpätkä kirjoittaa nykyisen DateTime-arvon tekstinä tiedostoon. Huomaa, että tämä toteutus ei ole langattomasti turvallinen; se on vain havainnollistamistarkoituksiin.

public void Suorita (IJobExecutionContext-konteksti)

        {

käyttäen (StreamWriter streamWriter = uusi StreamWriter (@ "D: \ Log.txt", true))

            {

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

            }

        }

Nyt kun olet jo määrittänyt työluokan, sinun on luotava oma työaikataululuokka ja määritettävä liipaisu työllesi. Trigger sisältää työn metatiedot cron-lausekkeena. Voit käydä tällä linkillä luodaksesi cron-lausekkeita.

Miten työpaikkojen aikataulu on? No, on osa, jota kutsutaan työn ajoitukseksi, joka on vastuussa töiden ajoituksesta. Pohjimmiltaan voit hyödyntää työn ajoittajia ajastamaan työsi suoritettavaksi. Seuraava koodiluettelo kuvaa, kuinka voimme määrittää liipaisimen työhömme ja sitten rekisteröidä työn ja liipaisimen työn ajastimella.

julkisen luokan JobSeduler

   {

julkinen staattinen void Start ()

       {

IScheduler Scheduler = StdSchedulerFactory.GetDefaultScheduler ();

Scheduler.Start ();

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

ITrigger trigger = TriggerBuilder.Create ()

.WithIdentity ("Job", "")

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

.StartAt (DateTime.UtcNow)

.Priorityllä (1)

.Rakentaa();

Scheduler.ScheduleJob (työ, liipaisin);

       }

   }

Katso yllä annettu koodiluettelo. Huomaa, kuinka liipaisimen nimi ja ryhmä on määritetty, kun luot liipaisimen esiintymää. Kun työn liipaisu on määritelty ja konfiguroitu tarvittavalla cron-lausekkeella, liipaisin rekisteröidään työn ajastimessa.

Voit myös rakentaa laukaisimen, joka laukaisee joka sekunti ja toistaa sen loputtomiin. Tässä on koodinpätkä, joka kuvaa kuinka voit luoda tällaisen laukaisimen.

ITrigger trigger = TriggerBuilder.Create ()

.WithIdentity ("Job", "")

.Aloita nyt()

.WithSimpleSchedule (s => s

.IntervalInSeconds (10)

RepeatForever ())

.Rakentaa();

Et aina tarvitse Windows-palvelua ajastimen käynnistämiseen. Jos käytät ASP.Net-verkkosovellusta, voit hyödyntää Global.asax-tiedoston Application_Start-tapahtumaa ja soittaa sitten JobScheduler.Start () -menetelmälle alla olevan koodinpätkän mukaisesti.

julkinen luokka Global: HttpApplication

   {

void Application_Start (objektin lähettäjä, EventArgs e)

       {

// Koodi, joka suoritetaan sovelluksen käynnistyksen yhteydessä

JobScheduler.Start ();

       }

   }

Huomaa, että JobScheduler on aiemmin suunnitellun mukautetun luokan nimi. Huomaa, että voit myös käyttää Quartz.Net-verkkoa tallentaaksesi työpaikkasi pysyviin säilöihin. Täältä löydät luettelon kaikista tuetuista työpaikoista.

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