Bagaimana bekerja dengan Hangfire di C #

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

Mengapa saya harus menggunakan Hangfire?

Ada banyak kerangka kerja penjadwalan yang tersedia saat ini. Lalu mengapa Anda harus menggunakan Hangfire daripada, katakanlah, Quartz.Net, yang merupakan kerangka populer lain yang telah lama digunakan? Nah, salah satu kelemahan utama Quartz.Net adalah ia membutuhkan Layanan Windows. Sebaliknya, Anda tidak memerlukan Layanan Windows untuk menggunakan Hangfire di aplikasi Anda. Kemampuan untuk berjalan tanpa Layanan Windows menjadikan Hangfire pilihan yang baik daripada Quartz.Net. Hangfire memanfaatkan pipeline pemrosesan permintaan ASP.Net untuk memproses dan menjalankan pekerjaan.

Perhatikan bahwa Hangfire tidak terbatas pada aplikasi Web; Anda juga dapat menggunakannya di aplikasi Konsol Anda. Dokumentasi untuk Hangfire sangat rinci dan terstruktur dengan baik, dan fitur terbaiknya adalah dasbor bawaannya. Dasbor Hangfire menunjukkan informasi rinci tentang pekerjaan, antrian, status pekerjaan, dan sebagainya.

Mulai

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

  1. Buka Visual Studio 2015
  2. Klik File> New> Project
  3. Pilih Visual C #> Web dari daftar template proyek yang ditampilkan
  4. Pilih aplikasi ASP.Net Web dari daftar template proyek Web
  5. Simpan proyek dengan nama

Langkah selanjutnya adalah menginstal dan mengkonfigurasi Hangfire di aplikasi Anda; prosesnya cukup mudah. Anda dapat menginstal Hangfire melalui NuGet Package Manager di Visual Studio. Alternatifnya, Anda juga dapat menggunakan Package Manager Console untuk menginstal pustaka Hangfire. Penginstalan default Hangfire menggunakan SQL Server untuk menyimpan informasi penjadwalan. Selain itu, Anda dapat menginstal Hangfire.Redis jika Anda menggunakan Redis sebagai gantinya untuk penyimpanan.

Perhatikan bahwa Hangfire menyimpan pekerjaan Anda dalam penyimpanan persisten - Anda perlu mengonfigurasi penyimpanan sebelum Anda mulai menggunakan Hangfire. Untuk melakukan ini, buat database dan tentukan kredensial database dalam string koneksi di file konfigurasi. Anda tidak perlu membuat tabel di database Anda; Hangfire akan melakukannya untuk Anda secara otomatis. Kami akan melihat bagaimana dan kapan itu akan dilakukan nanti.

Sekarang database telah dibuat dan informasi string koneksi ditentukan dalam file konfigurasi aplikasi, langkah selanjutnya adalah memodifikasi file Startup.cs dan memberikan informasi string koneksi yang diperlukan. Daftar kode berikut menggambarkan bagaimana file Startup.cs terlihat setelah detail konfigurasi 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 sudah siap. Ketika Anda menjalankan aplikasi dan mengakhiri URL dengan "/ hangfire", Anda dapat melihat dasbor Hangfire. Saat Anda menjalankan ini untuk pertama kalinya, tabel baru dibuat dalam database. Tabel yang dibuat antara lain AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set, dan State. Membuat latar belakang api-dan-lupakan di Hangfire cukup sederhana. Anda dapat membuat pekerjaan latar belakang menggunakan Enqueue()metode BackgroundJobkelas. Berikut contohnya:

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

Pekerjaan latar belakang yang tertunda adalah pekerjaan yang menunggu (untuk interval penundaan), kemudian dijalankan dengan cara yang sama seperti pekerjaan latar belakang api-dan-lupakan normal. Cuplikan kode berikut menggambarkan bagaimana Anda dapat membuat pekerjaan latar belakang tertunda menggunakan Schedule()metode BackgroundJobkelas.

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

Jika Anda mengeksekusi pekerjaan yang akan dijalankan setelah interval waktu tertentu, Anda perlu membuat pekerjaan berulang di Hangfire. Untuk membuat pekerjaan berulang, Anda harus memanfaatkan RecurringJobkelas. Perhatikan bahwa Anda juga dapat menentukan ekspresi "cron" saat menjadwalkan pekerjaan di Hangfire. Potongan kode berikut mengilustrasikan bagaimana Anda dapat membuat pekerjaan berulang menggunakan pustaka Hangfire.

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

Lihat tutorial Hangfire Highlighter untuk informasi lebih lanjut.