Hangfire çoğu .NET platformunda çalışır:.NET Framework 4.5 veya daha yeni sürümler, .NET Core 1.0 veya daha sonra, ile ilgili her şey. NET Standard 1.3 uyumlu platform. Bunu neredeyse her uygulama çerçevesiyle entegre edebilirsiniz; ASP.NET, ASP.NET Core, konsol uygulamaları, Windows servisleri, WCF ve Nancy veya ServiceStack gibi topluluk sürücüleri dahil.
Uygulanabilir senaryolar:Arka plan e-postayı asenkron olarak gönderir ve kullanıcıya mümkün olan en kısa sürede yanıt gönderir. Görevlerin planlı yürütülmesi, görevlerin döngüsel yürütülmesi, zaman alıcı görevlerin asenkron şekilde yürütülmesi, A görevinin tamamlanması ve ardından B görevlerinin yürütülmesi ve görevlerin toplu şekilde yürütülmesi. Eskiden nasıl yapardım:
Windows hizmetleri gibi diğer işlemleri kullanmadan ASP.NET uygulamaya arka plan işlemi koyabilirsiniz. Hangfire'ın kodu dağıtıma hazırBeklenmedik süreç sonlandırması, uygulama havuzunun geri dönüşümü ve yeniden başlatma。 Kullanım nedeniyleKalıcı depolama, bu yüzden senArka plan işi kaybedilmiyor。
İlk olarak, renderasyonlar aşağıdaki gibidir:
Yukarıdaki resim, çok kullanışlı ve arka plan görevlerinin durumunu kontrol edebilen Hangfire Dashboard paneli, ayrıca çok havalı, bu yüzden ayarlanması gerekiyor.
Dashboard arayüzü ise bir başlangıç sınıfı gerektiriyor, sadece eğerHangfire'ı Startup sınıfıyla yapılandırırken,Dashboard arayüzüKullanılabilir。
İlk başta Hangfire Dashboard panelini yapılandırmadım ve şu hatayı aldım:
Uygulamayı yüklemeye çalışırken aşağıdaki hatalar meydana geldi. - OwinStartupAttribute içeren bir assembly bulunmadı. - Startup veya [AssemblyName] içeren bir assembly bulunmamıştır. Startup dersi. OWIN başlangıç keşfini devre dışı bırakmak için, web.config'ünüze "false" değeriyle appSetting owin:AutomaticAppStartup ekleyin. OWIN başlangıç Assembly, Class veya Method'u belirtmek için, web.config'de tam nitelikli startup sınıfı veya yapılandırma metodu adıyla appSetting owin:AppStartup ekleyin.
Çözüm:
Global.asax.cs tabanlı başlatma kullanılırken, OWIN'in başlangıç sınıfı algılamasını da devre dışı bırakmanız gerekebilir.
Konuya geliyoruz, eğitim başlıyor:
1: Çerçeve, hangfire'ın ihtiyaçlarını karşılamalı,Projem .net 4.6.2, Yani, hangfire'ı normal şekilde kurabilirsiniz, .net 4.0 projeleri denemeye gerek yok, desteklenmiyor!
2: Nuget komutu şöyledir:
3: OWIN Startup sınıfı, web uygulaması önyükleme mantığını tek bir yerde tutmak için tasarlanmıştır. Visual Studio 2013'te, projeye sağ tıklayıp Add/OWIN Startup Class menü öğesini seçerek ekleyebilirsiniz. Aşağıda gösterildiği gibi:
Proje kök dizininde yeni bir Startup.cs dosyası oluşturun.
4: KonfigürasyonVeritabanı bağlantı dizisiBurada kullandığım SQL Server 2012 sürümü, web.config'deki yapılandırma şu şekildedir:
5: Hangfire Dashboard'u filtreye erişmek için yapılandırın, yeni bir tane oluşturunHangfireAuthorizationFilter.csDosya.
Varsayılan olarak, yalnızca Hangfire Dashboard'a yerel erişim izinlidir. Dashboard yetkilendirmesi, uzaktan erişime izin verecek şekilde yapılandırılmalıdır.
6: Startup.cs sınıfını yapılandırın, kod şu şekildedir:
7: Bir web sitesi projesine başlayın
F5 uygulamasını debug moduna basarak çalıştırın (bu, Debug.WriteLine metodunun çıktısına bakmayı gerektirir). Sonra Output penceresinde aşağıdaki mesajı kontrol ederek arka plan işleminin başarılı bir şekilde başladığını kontrol edin.
Aynı zamanda, veritabanında tüm görevlerin normal şekilde yürütülmesini sağlamak için 11 tablo daha vardır ve aşağıdaki şekilde gösterildiği gibi, IIS geri kazanma veya süreç yeniden başlatma sırasında görevlerin kaybolmasının sağlanmaması sağlanır:
http://<your-web-app>/hangfire Makalenin üstündeki render görüntüsünü görmek için Dashboard UI URL'sini ziyaret edin.
Ekli kullanım
Ateş Ve Unut (yayınla/abone ol)
Bu, kalıcı mesaj kuyruğunun işlediği ana arka plan görevi türüdür. Bir yayınla/abone görevi oluşturduğunuzda, görev varsayılan kuyruğa kaydedilir (varsayılan kuyruk "Default"dur, ancak birden fazla kuyruk desteklenir). Birden fazla adanmış çalışan bu kuyrukları dinliyor, oradan görevleri alıyor ve görevleri tamamlayacak.
Gecikme
Bazı görevlerin yürütülmesini geciktirmek istiyorsanız, aşağıdaki görevleri kullanabilirsiniz. Belirli bir gecikme süresinden sonra, görev kuyrağa alınır ve yayınla/abone olmuş bir görev gibi yürütülür.
Döngü
Metodu periyodikliğe göre (saatler, günler vb.) adlandırmak için RecurringJob sınıfını kullanın. Karmaşık senaryolarda, CRON ifadelerini kullanarak görevleri işlemek için planlanmış bir zaman belirtebilirsiniz.
Sürekli
Süreklilik, birden fazla arka plan görevini birbirine bağlayarak karmaşık iş akışlarını tanımlamanızı sağlar.
Resmi dokümantasyon bağlantısı:Bağlantı girişi görünür.
(Son)
|