Hangfire работи с повечето .NET платформи:.NET Framework 4.5 или по-нова версия, .NET Core 1.0 или по-нова, всичко, свързано с . Платформа, съвместима с NET Standard 1.3. Можете да го интегрирате с почти всяка рамка за приложения, включително ASP.NET, ASP.NET Core, конзолни приложения, Windows услуги, WCF и драйвери за общността като Nancy или ServiceStack.
Приложими сценарии:Фонът изпраща имейла асинхронно и връща отговор на потребителя възможно най-скоро. Планирано изпълнение на задачи, циклично изпълнение на задачи, асинхронно изпълнение на времеемки задачи, завършване на задача A и след това изпълнение на задачи B, както и пакетно изпълнение на задачи. Как го правех преди:
Можеш да сложиш фонова обработка в ASP.NET приложение, без да използваш други процеси като Windows услуги. Кодът на Hangfire е готов за внедряванеНеочаквано прекратяване на процеса, рециклиране на пула от приложения и рестартиране。 Поради употребатаПостоянно съхранение, затова тиНяма загубени работни места за фон。
Първо, визуализациите са следните:
Снимката по-горе показва таблото на Hangfire Dashboard, което е много полезно и може да проверява статуса на фоновите задачи, а също така е много готино, така че трябва да бъде конфигурирано.
UI на таблото изисква стартиращ клас, само акоКогато конфигурирам Hangfire с класа Startup,Интерфейс на таблотоМоже да се използва。
Първоначално не конфигурирах таблото на Hangfire Dashboard и получих следната грешка:
Следните грешки се появиха при опит за зареждане на приложението. - Не е открит асемблер, съдържащ OwinStartupAttribute. - Не е намерена асемблер, съдържаща Startup или [AssemblName]. Стартъп клас. За да изключите откриването при стартиране на OWIN, добавете appSetting owin:AutomaticAppStartup със стойност "false" във вашата web.config. За да определите OWIN стартъп Assembly, Class или Method, добавете appSetting owin:AppStartup с напълно квалифицирания старт клас или име на конфигурационен метод във вашата web.config.
Решение:
При използване на инициализация, базирана на Global.asax.cs, може да се наложи да изключите откриването на стартиращи класове в OWIN.
Стигаме до същината, урокът започва:
1: Рамката трябва да отговаря на нуждите на hangfire,Моят проект е .net 4.6.2, Така че, можеш да инсталираш Hangfire нормално, .NET 4.0 проектите не трябва да се опитват, не се поддържат!
2: Командата nuget е следната:
3: Класът за стартиране на OWIN е проектиран да държи логиката за стартиране на уеб приложението на едно място. Във Visual Studio 2013 можете да го добавите, като кликнете с десен бутон върху проекта и изберете елемента от менюто Add/OWIN Startup Class. Както е показано по-долу:
Създай нов Startup.cs файл в директорията с root проекта.
4: КонфигурацияВръзка към база данни, версията на SQL Server 2012, която използвам тук, конфигурацията в web.config е следната:
5: Конфигурирайте таблото на Hangfire да достъпва филтъра, създавайте новHangfireAuthorizationFilter.csФайл.
По подразбиране е разрешен само локален достъп до Hangfire Dashboard. Авторизацията на таблото трябва да бъде конфигурирана така, че да позволява отдалечен достъп.
6: Конфигурирайте класа Startup.cs, кодът е следният:
7: Започнете уебсайт проект
Стартирайте приложението F5, като натиснете debug mode (това изисква да видите изхода на метода Debug.WriteLine). След това проверете следното съобщение в прозореца за изход, за да видите дали фоновата обработка е стартирала успешно.
В същото време базата данни има още 11 таблици, които гарантират, че всички задачи могат да се изпълняват нормално и задачите няма да бъдат загубени при възстановяване на IIS или рестартиране на процеса, както е показано на фигурата по-долу:
http://<your-web-app>/hangfire Посетете URL адреса на потребителския интерфейс на таблото, за да видите рендирането в горната част на статията.
Приложена употреба
Огън и забравя (публикуване/абониране)
Това е основният тип фонова задача, която обработва опашката за постоянни съобщения. Когато създадете задача за публикуване/абониране, задачата ще бъде запазена в стандартната опашка (по подразбиране опашката е "Default", но се поддържат няколко опашки). Множество специализирани работници слушат тази опашка, извличат задачи от нея и изпълняват задачите.
Забавяне
Ако искате да забавите изпълнението на определени задачи, можете да използвате следните задачи. След определено време на забавяне задачата се поставя на опашка и се изпълнява като задача за публикуване/абониране.
Кръг
За да извикаш метода по периодичност (часове, дни и т.н.), използвай класа RecurringJob. В сложни ситуации можете да използвате CRON изрази, за да зададете планирано време за обработка на задачите.
Непрекъснат
Непрекъснатостта ви позволява да дефинирате сложни работни процеси чрез свързване на множество фонови задачи.
Официална документация:Входът към хиперлинк е видим.
(Край)
|