Cara bekerja dengan Hangfire di C #

Menjadwalkan pekerjaan dalam aplikasi Web adalah satu cabaran, dan anda dapat memilih dari banyak kerangka kerja untuk tugas tersebut. Perpustakaan sumber terbuka yang popular, Hangfire adalah salah satu kerangka yang dapat digunakan untuk menjadwalkan pekerjaan latar belakang di .Net.

Mengapa saya mesti menggunakan Hangfire?

Terdapat banyak kerangka penjadualan pekerjaan yang ada sekarang. Maka mengapa anda harus menggunakan Hangfire dan bukannya, katakanlah, Quartz.Net, yang merupakan kerangka popular lain yang telah lama digunakan? Nah, salah satu kelemahan utama Quartz.Net adalah bahawa ia memerlukan Perkhidmatan Windows. Sebaliknya, anda tidak memerlukan Perkhidmatan Windows untuk menggunakan Hangfire dalam aplikasi anda. Keupayaan untuk menjalankan tanpa Perkhidmatan Windows menjadikan Hangfire pilihan yang baik berbanding Quartz.Net. Hangfire memanfaatkan saluran pemprosesan permintaan ASP.Net untuk memproses dan melaksanakan tugas.

Perhatikan bahawa Hangfire tidak terhad pada aplikasi Web; anda juga boleh menggunakannya dalam aplikasi Konsol anda. Dokumentasi untuk Hangfire sangat terperinci dan tersusun dengan baik, dan ciri terbaik adalah papan pemuka terbina dalam. Papan pemuka Hangfire menunjukkan maklumat terperinci mengenai pekerjaan, barisan, status pekerjaan, dan sebagainya.

Bermula

Untuk membuat projek baru di Visual Studio yang memanfaatkan Hangfire, ikuti langkah berikut:

  1. Buka Visual Studio 2015
  2. Klik pada Fail> Baru> Projek
  3. Pilih Visual C #> Web dari senarai templat projek yang dipaparkan
  4. Pilih aplikasi Web ASP.Net dari senarai templat projek Web
  5. Simpan projek dengan nama

Langkah seterusnya ialah memasang dan mengkonfigurasi Hangfire dalam aplikasi anda; prosesnya agak mudah. Anda boleh memasang Hangfire melalui Pengurus Pakej NuGet di Visual Studio. Sebagai alternatif, anda juga boleh menggunakan Konsol Pengurus Pakej untuk memasang perpustakaan Hangfire. Pemasangan lalai Hangfire menggunakan SQL Server untuk menyimpan maklumat penjadualan. Selain itu, anda boleh memasang Hangfire.Redis jika anda menggunakan Redis sebagai gantinya.

Perhatikan bahawa Hangfire menyimpan pekerjaan anda dalam simpanan berterusan - anda perlu mengkonfigurasi penyimpanan sebelum anda mula menggunakan Hangfire. Untuk melakukan ini, buat pangkalan data dan tentukan kelayakan pangkalan data dalam rentetan sambungan dalam fail konfigurasi. Anda tidak perlu membuat jadual dalam pangkalan data anda; Hangfire akan melakukannya untuk anda secara automatik. Kami akan melihat bagaimana dan kapan ia akan dilakukan kemudian.

Setelah pangkalan data telah dibuat dan maklumat rentetan sambungan ditentukan dalam fail konfigurasi aplikasi, langkah selanjutnya adalah mengubah fail Startup.cs dan memberikan maklumat rentetan sambungan yang diperlukan. Penyenaraian kod berikut menggambarkan bagaimana fail Startup.cs menjaga perincian konfigurasi yang telah ditentukan.

using Hangfire;

using Microsoft.Owin;

using Owin;

using System;

[assembly: OwinStartupAttribute(jenis(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();

        }

    }

}

Anda telah siap sedia. Apabila anda menjalankan aplikasi dan akhiran URL dengan "/ hangfire", anda dapat melihat papan pemuka Hangfire. Apabila anda melaksanakannya pada kali pertama, jadual baru dibuat dalam pangkalan data. Jadual yang dibuat merangkumi AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set, dan State. Membuat latar belakang api dan lupakan di Hangfire cukup mudah. Anda boleh membuat pekerjaan latar belakang menggunakan Enqueue()kaedah BackgroundJobkelas. Inilah contohnya:

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

Pekerjaan latar belakang yang tertangguh adalah pekerjaan yang menunggu (selang penundaan), kemudian melaksanakan dengan cara yang sama seperti pekerjaan latar belakang yang biasa dan dilupakan. Coretan kod berikut menggambarkan bagaimana anda boleh membuat pekerjaan latar belakang yang tertangguh menggunakan Schedule()kaedah BackgroundJobkelas.

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

Sekiranya anda melakukan pekerjaan yang akan dilaksanakan setelah selang waktu tertentu, Anda harus membuat pekerjaan berulang di Hangfire. Untuk membuat pekerjaan berulang, anda harus memanfaatkan RecurringJobkelas. Perhatikan bahawa anda juga dapat menentukan ungkapan "cron" ketika menjadwalkan pekerjaan di Hangfire. Coretan kod berikut menggambarkan bagaimana anda dapat membuat pekerjaan berulang menggunakan perpustakaan Hangfire.

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

Lihat tutorial Hangfire Highlighter untuk maklumat lebih lanjut.