Hangfire współpracuje z większością platform .NET:.NET Framework 4.5 lub nowszy, .NET Core 1.0 lub nowszy, wszystko związane z . Platforma zgodna z NET Standard 1.3. Możesz go zintegrować z niemal każdym frameworkiem aplikacji, w tym ASP.NET, ASP.NET Core, aplikacjami konsolowymi, usługami Windows, WCF oraz sterownikami społecznościowymi takimi jak Nancy czy ServiceStack.
Dostępne scenariusze:Tło wysyła e-mail asynchronicznie i odpowiada użytkownikowi tak szybko, jak to możliwe. Planowane wykonywanie zadań, cykliczne wykonywanie zadań, asynchroniczne wykonywanie czasochłonnych zadań, zakończenie wykonania zadania A, a następnie zadania B oraz wykonywanie zadań wsadowych. Jak kiedyś to robiłem:
Możesz wprowadzić przetwarzanie w tle w ASP.NET aplikacji bez używania innych procesów, takich jak usługi Windows. Kod Hangfire jest gotowy do wdrożeniaNieoczekiwane zakończenie procesu, recykling puli aplikacji i restart。 Ze względu na zastosowanieTrwała pamięć, stąd tyNie tracę żadnych pracy w pracy w praktykach。
Po pierwsze, przedstawienia przedstawiają się następująco:
Na powyższym zdjęciu jest dashboard Hangfire Dashboard, który jest bardzo przydatny i pozwala sprawdzać status zadań w tle, a także jest bardzo fajny, więc musi być skonfigurowany.
Interfejs dashboardu wymaga klasy startowej, tylko jeśliKonfigurując Hangfire z klasą Startup,Dashboard UIMożna go używać。
Na początku nie konfigurowałem dashboardu Hangfire Dashboard i pojawił się następujący błąd:
Podczas próby uruchomienia aplikacji wystąpiły następujące błędy. - Nie znaleziono żadnego zespołu zawierającego atrybut OwinStartup. - Nie znaleziono żadnego zespołu zawierającego Startup lub [AssemblyName]. Zajęcia o startupach. Aby wyłączyć odkrywanie uruchamiania OWIN, dodaj appSetting owin:AutomaticAppStartup z wartością "false" w pliku web.config. Aby określić Assembly, Class lub Method startu OWIN, dodaj appSetting owin:AppStartup z w pełni kwalifikowaną klasą startową lub nazwą metody konfiguracji w swoim web.config.
Rozwiązanie:
Podczas inicjalizacji opartej na Global.asax.cs może być konieczne wyłączenie wykrywania klasy startowej w OWIN.
Przechodzimy do sedna, samouczek zaczyna się tak:
1: Ramy powinny spełniać potrzeby hangfire,Mój projekt to .net 4.6.2, Więc możesz normalnie zainstalować hangfire, projekty .net 4.0 nie muszą próbować, nie są wspierane!
2: Polecenie nuget wygląda następująco:
3: Kurs OWIN Startup został zaprojektowany tak, aby utrzymać logikę uruchamiania aplikacji webowych w jednym miejscu. W Visual Studio 2013 możesz dodać, klikając prawym przyciskiem myszy na projekt i wybierając pozycję menu Add/OWIN Startup Class. Jak pokazano poniżej:
Utwórz nowy plik Startup.cs w katalogu głównym projektu.
4: KonfiguracjaCiąg połączeń bazy danych, wersji SQL Server 2012, której tutaj używam, konfiguracja w web.config wygląda następująco:
5: Konfiguruj Hangfire Dashboard, aby uzyskać dostęp do filtra, tworząc nowyHangfireAuthorizationFilter.csPlik.
Domyślnie dozwolony jest tylko lokalny dostęp do Hangfire Dashboard. Autoryzacja pulpitu musi być skonfigurowana tak, aby umożliwić zdalny dostęp.
6: Konfiguruj klasę Startup.cs, kod wygląda następująco:
7: Rozpocznij projekt strony internetowej
Uruchom aplikację F5, naciskając tryb debug (wymaga to sprawdzenia wyjścia metody Debug.WriteLine). Następnie sprawdź następujący komunikat w oknie Output, aby sprawdzić, czy przetwarzanie w tle rozpoczęło się pomyślnie.
Jednocześnie baza danych zawiera 11 dodatkowych tabel, aby zapewnić normalne wykonywanie wszystkich zadań i nie utracić ich podczas odzyskiwania IIS lub restartu procesu, jak pokazano na poniższym rysunku:
http://<your-web-app>/hangfire Odwiedź adres URL interfejsu Dashboard, aby zobaczyć renderowanie na górze artykułu.
Załączone zastosowanie
Fire-And-forget (publikuj/subskrybuj)
To główny typ zadania w tle, którym zarządza trwała kolejka wiadomości. Gdy tworzysz zadanie publikuj/subskrybuj, zadanie zostanie zapisane w domyślnej kolejce (domyślna kolejka to "Domyślna", ale obsługiwane są kolejki wielokrotnie). Wielu dedykowanych pracowników słucha tej kolejki, pobiera z niej zadania i wykonuje zadania.
Opóźnienie
Jeśli chcesz opóźnić wykonanie niektórych zadań, możesz użyć następujących zadań. Po upływie określonego czasu opóźnienia zadanie jest kolejkowane i wykonywane jak zadanie publikuj/subskrybuj.
Pętla
Aby wywołać metodę według okresowości (godziny, dni itd.), użyj klasy RecurringJob. W złożonych scenariuszach możesz użyć wyrażeń CRON do określenia zaplanowanego czasu na przetwarzanie zadań.
Ciągłe
Ciągłość pozwala definiować złożone przepływy pracy poprzez łączenie wielu zadań w tle.
Oficjalny link do dokumentacji:Logowanie do linku jest widoczne.
(Koniec)
|