Programmering

Hvordan jobbe med Quartz.Net i C #

Når du jobber med applikasjoner, må du ofte utføre visse oppgaver i bakgrunnen i forhåndsdefinerte tidsintervaller. Å planlegge jobber i applikasjoner er en utfordring, og du kan velge mellom mange tilgjengelige rammer rundt, for eksempel kvarts, Hangfire, etc.

Quartz.Net har vært i bruk i lang tid og gir bedre støtte for å jobbe med Cron-uttrykk. Hangfire er enda et rammeverk for jobbplanlegger som utnytter ASP.Net-forespørselsbehandlingsrørledningen for behandling og utføring av jobber.

Quartz.Net er en .Net-port for det populære Java-planleggingsrammeverket. Det er et åpen planleggingssystem for åpen kildekode som kan brukes fra de minste appene til store bedriftssystemer. Den offisielle nettsiden til Quartz.Net sier: "Quartz.Net er et fullverdig, åpen kildekode-planleggingssystem som kan brukes fra minste apper til store bedriftssystemer."

Starter

Du kan installere Quartz.Net fra nedlastingsdelen av Quartz offisielle nettsted. Du kan også installere Quartz.Net gjennom Package Manager-vinduet i Visual Studio IDE.

De tre primære komponentene i Quartz er jobber, utløsere og planleggere, dvs. for å opprette og planlegge jobber i Quartz.Net, må du ha planleggere, utløsere og jobber. Mens en jobb betegner oppgaven som må utføres, brukes en utløser for å spesifisere hvordan jobben skal utføres. Planleggeren er komponenten som planlegger jobbene. Merk at du bør registrere jobbene dine og utløserne hos planleggeren.

Programmering av Quartz.Net i C #

For å opprette en jobb, bør du opprette en klasse som implementerer IJob-grensesnittet. For øvrig erklærer dette grensesnittet Execute-metoden - du bør implementere denne metoden i din tilpassede jobbklasse. Følgende kodebit illustrerer hvordan du kan implementere IJob-grensesnittet for å designe en tilpasset jobbklasse ved hjelp av Quartz.Net-biblioteket.

offentlig klasse Jobb: IJob

   {

public void Execute (IJobExecutionContext context)

       {

// Eksempelkode som angir jobben som skal utføres

       }

   }

Her er en enkel implementering av Execute-metoden i jobbklassen - jeg overlater til deg å designe din tilpassede jobbklasse som passer til applikasjonens behov. Kodebiten gitt nedenfor skriver gjeldende DateTime-verdi som en tekst til en fil. Merk at denne implementeringen ikke er trådsikker; det er bare for illustrasjonsformål.

public void Execute (IJobExecutionContext context)

        {

bruker (StreamWriter streamWriter = ny StreamWriter (@ "D: \ Log.txt", sant))

            {

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

            }

        }

Nå som du allerede har definert jobbklassen, må du opprette din egen jobbplanleggerklasse og definere utløseren for jobben din. Utløseren vil inneholde jobbens metadata som cron-uttrykk. Du kan gå til denne lenken for å generere cron-uttrykk.

Nå, hvordan er jobbene planlagt? Vel, det er en komponent som heter jobbplanlegger som er ansvarlig for planlegging av jobbene dine. I hovedsak kan du dra nytte av jobbplanleggere for å planlegge jobbene dine for utførelse. Følgende kodeliste illustrerer hvordan vi kan definere en utløser for jobben vår og deretter registrere jobben og utløseren med jobbplanleggeren.

offentlig klasse JobScheduler

   {

offentlig statisk tomrom Start ()

       {

IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler ();

planlegger.Start ();

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

ITrigger trigger = TriggerBuilder.Create ()

.WithIdentity ("Jobb", "")

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

.StartAt (DateTime.UtcNow)

.WithPriority (1)

.Bygge();

scheduler.ScheduleJob (jobb, utløser);

       }

   }

Se kodelisten ovenfor. Legg merke til hvordan navnet og gruppen til utløseren er spesifisert når du oppretter utløserforekomsten. Når utløseren for jobben er definert og konfigurert ved hjelp av det nødvendige cron-uttrykket, blir utløseren registrert med jobbplanleggeren.

Du kan like godt bygge en utløser som avfyres hvert sekund og gjentar den på ubestemt tid. Her er en kodebit som illustrerer hvordan du kan bygge en utløser som denne.

ITrigger trigger = TriggerBuilder.Create ()

.WithIdentity ("Jobb", "")

.Start nå()

.WithSimpleSchedule (s => s

.WithIntervalInSeconds (10)

.RepeatForever ())

.Bygge();

Du trenger ikke alltid en Windows-tjeneste for å starte planleggeren. Hvis du bruker et ASP.Net-webapplikasjon, kan du dra nytte av Application_Start-hendelsen i Global.asax-filen og deretter ringe til JobScheduler.Start () -metoden som vist i kodebiten nedenfor.

offentlig klasse Global: HttpApplication

   {

ugyldig Application_Start (objektavsender, EventArgs e)

       {

// Kode som kjører ved oppstart av applikasjonen

JobScheduler.Start ();

       }

   }

Merk at JobScheduler er navnet på den tilpassede klassen vi designet tidligere. Vær oppmerksom på at du også kan utnytte Quartz.Net til å lagre jobbene dine til vedvarende lagring, dvs. du kan også vedvare jobbene dine i databasen. Du kan kjenne listen over alle støttede jobbbutikker herfra.

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