Kako raditi s Hangfireom na C #

Zakazivanje poslova u web aplikacijama izazov je i možete birati između mnogih okvira za zadatak. Popularna biblioteka otvorenog koda, Hangfire je jedan okvir koji se može koristiti za raspoređivanje pozadinskih poslova u .Netu.

Zašto bih trebao koristiti Hangfire?

Danas je dostupno mnogo okvira za raspoređivanje poslova. Zašto biste onda trebali koristiti Hangfire umjesto, recimo, Quartz.Net, što je još jedan popularni okvir koji se već dugo koristi? Pa, jedan od glavnih nedostataka Quartz.Net-a je taj što mu je potrebna Windows usluga. Naprotiv, nije vam potrebna Windows usluga da biste koristili Hangfire u svojoj aplikaciji. Mogućnost pokretanja bez Windows usluge čini Hangfire dobrim izborom u odnosu na Quartz.Net. Hangfire koristi prednost cjevovoda za obradu zahtjeva ASP.Net-a za obradu i izvršavanje poslova.

Imajte na umu da Hangfire nije ograničen na web aplikacije; možete ga koristiti i u aplikacijama konzole. Dokumentacija za Hangfire vrlo je detaljna i dobro strukturirana, a najbolja značajka je njena ugrađena nadzorna ploča. Hangfire nadzorna ploča prikazuje detaljne informacije o poslovima, redovima, statusu poslova itd.

Početak rada

Da biste u Visual Studiju stvorili novi projekt koji koristi Hangfire, slijedite ove korake:

  1. Otvorite Visual Studio 2015
  2. Kliknite Datoteka> Novo> Projekt
  3. Na popisu prikazanih predložaka projekata odaberite Visual C #> Web
  4. Odaberite web-aplikaciju ASP.Net s popisa predložaka web-projekata
  5. Spremite projekt s imenom

Sljedeći je korak instaliranje i konfiguriranje Hangfirea u vašoj aplikaciji; postupak je sasvim jednostavan. Hangfire možete instalirati putem upravitelja paketa NuGet u Visual Studiju. Alternativno, možete upotrijebiti i Package Manager Console za instaliranje Hangfire biblioteke. Zadana instalacija Hangfirea koristi SQL Server za pohranu podataka o rasporedu. Uz to, možete instalirati Hangfire.Redis ako umjesto njega koristite Redis za pohranu.

Imajte na umu da Hangfire pohranjuje vaše poslove u trajnu pohranu - morate konfigurirati pohranu prije nego što počnete koristiti Hangfire. Da biste to učinili, stvorite bazu podataka i navedite vjerodajnice baze podataka u nizu veze u konfiguracijskoj datoteci. Ne morate stvarati tablice u svojoj bazi podataka; Hangfire će to automatski učiniti za vas. Vidjet ćemo kako će i kada to biti učinjeno kasnije.

Sada kada je baza podataka stvorena i podaci o nizu veze navedeni u konfiguracijskoj datoteci aplikacije, sljedeći je korak izmjena datoteke Startup.cs i pružanje potrebnih podataka o nizu veze. Sljedeći popis kodova prikazuje kako izgleda datoteka Startup.cs nakon što su navedeni detalji konfiguracije.

using Hangfire;

using Microsoft.Owin;

using Owin;

using System;

[assembly: OwinStartupAttribute(vrsta(HangFire.Startup))]

namespace HangFire

{

    public partial class Startup

    {

        public void Configuration(IAppBuilder app)

        {

            ConfigureAuth(app);

            GlobalConfiguration.Configuration

                .UseSqlServerStorage("DefaultConnection");

            BackgroundJob.Enqueue(() => Console.WriteLine("Getting Started with HangFire!"));

            app.UseHangfireDashboard();

            app.UseHangfireServer();

        }

    }

}

Spreman si. Kada pokrenete aplikaciju i sufiksirate URL s "/ hangfire", možete vidjeti Hangfire nadzornu ploču. Kada ovo izvršite prvi put, u bazi podataka kreira se nova tablica. Izrađene tablice uključuju AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set i State. Stvaranje pozadine za vatru i zaborav u Hangfireu prilično je jednostavno. Pozadinski posao možete stvoriti Enqueue()metodom BackgroundJobklase. Evo primjera:

BackgroundJob.Enqueue(() => Console.WriteLine("This is a fire-and-forget job that would run in the background."));

Odgođeni pozadinski posao je onaj koji čeka (na interval kašnjenja), a zatim se izvršava gotovo na isti način kao i uobičajeni pozadinski posao "zapalji i zaboravi". Sljedeći isječak koda ilustrira kako možete stvoriti odgođeni pozadinski posao pomoću Schedule()metode BackgroundJobklase.

BackgroundJob.Schedule(() => Console.WriteLine("This background job would execute after a delay."), TimeSpan.FromMilliseconds(1000));

Ako biste izvršavali poslove koji bi se izvršavali nakon određenog vremenskog intervala, u Hangfireu biste trebali stvoriti ponavljajuće poslove. Da biste stvorili ponavljajući posao, trebali biste koristiti RecurringJobklasu. Imajte na umu da možete odrediti i izraze "cron" prilikom raspoređivanja poslova u Hangfireu. Sljedeći isječak koda ilustrira kako možete stvoriti ponavljajući posao pomoću biblioteke Hangfire.

RecurringJob.AddOrUpdate(() => Console.WriteLine("This job will execute once in every minute"), Cron.Minutely);

Dodatne informacije potražite u vodiču za Hangfire Highlighter.