Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 61378|Yanıt: 6

[ASP.NET] asp.net arka plan görevi hangfire framework eğitimi

[Bağlantıyı kopyala]
Yayınlandı 24.05.2019 09:51:10 | | | |
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:

c# evrensel bir QueueHelper kuyruğunu kapsüller
https://www.itsvse.com/thread-5029-1-1.html
(Kaynak: Architect_Programmer)


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)






Önceki:Video veri algoritması notları paylaşır
Önümüzdeki:İstek iptal edildi: SSL/TLS güvenli kanal çözümü oluşturulamadı
Yayınlandı 24.05.2019 10:12:25 |
Bu gönderi en son 2019-5-24 10:20 tarihinde YuAn tarafından düzenlenmiştir

Güzel makale öğrendim
Yayınlandı 24.05.2019 10:12:46 |
Destek Desteği
Yayınlandı 17.09.2021 21:59:44 |

Destek Desteği
Yayınlandı 26.09.2022 22:20:45 |
Destek, nasıl kullanılacağını öğren
Yayınlandı 12.11.2022 19:02:23 |

Destek, nasıl kullanılacağını öğren
Yayınlandı 25.03.2023 09:45:31 |

Destek, nasıl kullanılacağını öğren
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com