Hangfire bekerja dengan sebagian besar platform .NET:.NET Framework 4.5 atau yang lebih baru, .NET Core 1.0 atau lebih baru, apa pun yang terkait dengan . Platform yang kompatibel dengan NET Standard 1.3. Anda dapat mengintegrasikannya dengan hampir semua kerangka kerja aplikasi, termasuk ASP.NET, ASP.NET Core, aplikasi konsol, layanan Windows, WCF, dan driver komunitas seperti Nancy atau ServiceStack.
Skenario yang berlaku:Latar belakang mengirim email secara asinkron dan mengembalikan respons kepada pengguna sesegera mungkin. Eksekusi tugas terjadwal, eksekusi tugas siklus, eksekusi asinkron tugas yang memakan waktu, penyelesaian eksekusi tugas A dan kemudian eksekusi tugas B, dan eksekusi tugas batch. Bagaimana saya dulu melakukannya:
Anda dapat menempatkan pemrosesan latar belakang di aplikasi ASP.NET tanpa menggunakan proses lain seperti layanan Windows. Kode Hangfire siap untuk diterapkanPenghentian proses yang tidak terduga, daur ulang kumpulan aplikasi, dan restart。 Karena penggunaanPenyimpanan persisten, karenanya AndaTidak ada pekerjaan latar belakang yang hilang。
Pertama, renderingnya adalah sebagai berikut:
Gambar di atas adalah dasbor Hangfire Dashboard, yang sangat berguna dan dapat mengecek status tugas latar belakang, dan juga sangat keren, sehingga harus dikonfigurasi.
UI dasbor memerlukan kelas startup, hanya jika AndaSaat mengonfigurasi Hangfire dengan kelas Startup,UI DasborItu bisa digunakan。
Pada awalnya, saya tidak mengonfigurasi dasbor Hangfire Dashboard dan mendapatkan kesalahan berikut:
Kesalahan berikut terjadi saat mencoba memuat aplikasi. - Tidak ada rakitan yang ditemukan yang berisi OwinStartupAttribute. - Tidak ada rakitan yang ditemukan yang berisi Startup atau [AssemblyName]. Kelas startup. Untuk menonaktifkan penemuan startup OWIN, tambahkan appSetting owin:AutomaticAppStartup dengan nilai "false" di web.config Anda. Untuk menentukan Rakitan, Kelas, atau Metode startup OWIN, tambahkan appSetting owin:AppStartup dengan kelas startup atau nama metode konfigurasi yang sepenuhnya memenuhi syarat di web.config Anda.
Larutan:
Saat menggunakan inisialisasi berbasis Global.asax.cs, Anda mungkin juga perlu menonaktifkan deteksi kelas startup OWIN.
Kami mulai ke intinya, tutorial dimulai:
1: Kerangka kerja harus memenuhi kebutuhan hangfire,Proyek saya adalah .net 4.6.2, Jadi, Anda dapat menginstal hangfire secara normal, proyek .net 4.0 tidak perlu dicoba, tidak didukung!
2: Perintah nuget adalah sebagai berikut:
3: Kelas OWIN Startup dirancang untuk menjaga logika bootstrapping aplikasi web di satu tempat. Di Visual Studio 2013, Anda dapat menambahkannya dengan mengklik kanan pada proyek dan memilih item menu Tambahkan/OWIN Kelas Startup. Seperti yang ditunjukkan di bawah ini:
Buat file Startup.cs baru di direktori akar proyek.
4: KonfigurasiString koneksi database, versi SQL Server 2012 yang saya gunakan di sini, konfigurasi di web.config adalah sebagai berikut:
5: Konfigurasikan Dasbor Hangfire untuk mengakses filter, buat yang baruHangfireAuthorizationFilter.csArsip.
Secara default, hanya akses lokal ke Dasbor Hangfire yang diizinkan. Otorisasi dasbor harus dikonfigurasi untuk mengizinkan akses jarak jauh.
6: Konfigurasikan kelas Startup.cs, kodenya adalah sebagai berikut:
7: Mulai proyek situs web
Jalankan aplikasi F5 dengan menekan mode debug (ini memerlukan melihat output metode Debug.WriteLine). Kemudian periksa pesan berikut di jendela Output untuk melihat apakah pemrosesan latar belakang telah berhasil dimulai.
Pada saat yang sama, database juga memiliki 11 tabel lagi untuk memastikan bahwa semua tugas dapat dijalankan secara normal, dan tugas tidak akan hilang di bawah reklamasi IIS atau restart proses, seperti yang ditunjukkan pada gambar di bawah ini:
http://<your-web-app>/hangfire Kunjungi URL UI Dasbor untuk melihat rendering di bagian atas artikel.
Penggunaan terlampir
Api dan lupakan (publikasikan/berlangganan)
Ini adalah jenis tugas latar belakang utama yang ditangani oleh antrean pesan persisten. Saat Anda membuat tugas publikasi/berlangganan, tugas akan disimpan ke antrean default (antrean default adalah "Default", tetapi beberapa antrean didukung). Beberapa pekerja khusus mendengarkan antrean ini dan mengambil tugas darinya dan menyelesaikan tugas.
Penundaan
Jika Anda ingin menunda eksekusi tugas tertentu, Anda dapat menggunakan tugas-tugas berikut. Setelah waktu tunda tertentu, tugas diantri dan dijalankan seperti tugas publikasi/berlangganan.
Lingkaran
Untuk memanggil metode berdasarkan periodisitas (jam, hari, dll.), gunakan kelas RecurringJob. Dalam skenario kompleks, Anda dapat menggunakan ekspresi CRON untuk menentukan waktu terjadwal untuk memproses tugas.
Berkelanjutan
Kontinuitas memungkinkan Anda menentukan alur kerja yang kompleks dengan menghubungkan beberapa tugas latar belakang bersama-sama.
Tautan dokumentasi resmi:Login hyperlink terlihat.
(Akhir)
|