織夢(mèng)源碼安裝方法(織夢(mèng)源碼修改方法)
前言:
定時(shí)任務(wù)調(diào)度問題,是一個(gè)老生常談的問題。網(wǎng)上有許多定時(shí)任務(wù)調(diào)度的解決方案,對(duì)于我而言很早以前主要是使用Window計(jì)劃和Window服務(wù)來做任務(wù)定時(shí)執(zhí)行,然后就開始使用定時(shí)任務(wù)調(diào)度框架Quartz.Net。但是卻一直沒有上手過Hangfire這個(gè)自帶后臺(tái)任務(wù)調(diào)度面板,可以在后臺(tái)手動(dòng)執(zhí)行任務(wù)的神奇的任務(wù)調(diào)度框架。前段時(shí)間終于開始對(duì)他下手了,通過在網(wǎng)上查閱了一些資料和查看了Hangfire在Github中的demo,終于在我自己的項(xiàng)目中用上了Hangfire。在該篇文章中主要簡(jiǎn)單介紹一下什么是Hangfire,Hangfire的基本特征與優(yōu)點(diǎn)和分別使用MySQL,MS SQL Server作為存儲(chǔ)使用。
一、Hangfire是什么:
Hangfire是一個(gè)開源的.NET任務(wù)調(diào)度框架,提供了內(nèi)置集成化的控制臺(tái),可以直觀明了的查看作業(yè)調(diào)度情況,并且Hangfire不需要依賴于單獨(dú)的應(yīng)用程序執(zhí)行(如:windows服務(wù),window計(jì)劃)。并且支持持久性存儲(chǔ)。
二、Hangfire使用條件:
Hangfire與特定的.NET應(yīng)用程序類型無關(guān)。您可以在ASP.NET Web應(yīng)用程序,非ASP.NET Web應(yīng)用程序,控制臺(tái)應(yīng)用程序或Windows服務(wù)中使用它。以下是要求:
1.NET Framework 4.5
2.永久存儲(chǔ)(Hangfire將后臺(tái)作業(yè)和其他與處理有關(guān)的信息保留在永久性存儲(chǔ)器中,所以需要存儲(chǔ)庫來存儲(chǔ)如:MS SQL Server,Redis,MySQL,PostgreSql等)
3.Newtonsoft.Json庫≥5.0.1
Hangfire與特定的.NET應(yīng)用程序類型無關(guān)。您可以在ASP.NET Web應(yīng)用程序,非ASP.NET Web應(yīng)用程序,控制臺(tái)應(yīng)用程序或Windows服務(wù)中使用它。以下是要求:
1.NET Framework 4.5
2.永久存儲(chǔ)(Hangfire將后臺(tái)作業(yè)和其他與處理有關(guān)的信息保留在永久性存儲(chǔ)器中,所以需要存儲(chǔ)庫來存儲(chǔ)如:MS SQL Server,Redis,MySQL,PostgreSql等)
3.Newtonsoft.Json庫≥5.0.1
通過官網(wǎng)中的一張圖片便可知道它是一個(gè)多么優(yōu)秀的任務(wù)調(diào)度框架,如下圖所示:
展開全文
四、Hangfire安裝和使用: 在NuGet上有關(guān)于Hangfire的 一系列軟件包:
詳情地址:https://www.nuget.org/packages?q=Hangfire
通過在程序包管理控制臺(tái)中輸入安裝命令安裝Hangfire所需NuGet包: 使用MS SQL Server作為存儲(chǔ)時(shí)我們需要安裝的NuGet:
在ASP.NET 應(yīng)用程序下使用Hangfire安裝:
在控制臺(tái)應(yīng)用程序或者window server中處理作業(yè):
注意,在控制臺(tái)應(yīng)用程序或者window server中不推薦直接安裝:Install-Package Hangfire ,因?yàn)樗皇且粋€(gè)快速啟動(dòng)軟件包,并包含您可能不需要的依賴項(xiàng)(例如,Microsoft.Owin.Host.SystemWeb等無關(guān)依賴項(xiàng))。
使用MySQL作為存儲(chǔ)時(shí)我們需要安裝的NuGet:
在ASP.NET 應(yīng)用程序下使用Hangfire安裝:
我們還需要安裝一個(gè)MySql存儲(chǔ)(Hangfire.MySqlStorage)的拓展,注意因?yàn)镠angfire本身是不支持MySQL存儲(chǔ)的,這是名為: Arnoldas Gudas作者拓展的:
Nuget地址:https://www.nuget.org/packages/Hangfire.MySqlStorage/
安裝命令:
注意:因?yàn)槲业捻?xiàng)目是.NET Framework,Version=v4.5.1版本的,所以只能安裝1.0.7版本的,大家看需求而定
當(dāng)我們要使用(宿主)IIS托管ASP.NET應(yīng)用程序時(shí),我們還需要安裝:
添加和配置OWIN Startup.cs,及其連接對(duì)應(yīng)的存儲(chǔ)數(shù)據(jù)庫: 添加OWIN Startup.cs
這里是當(dāng)你的項(xiàng)目中不存在Startup.cs時(shí)才需要執(zhí)行添加的操作!
什么是OWIN Startup.cs:
簡(jiǎn)單概述:是.NET 平臺(tái)開放的web接口,Startup則是.Net與web通訊管道,起到轉(zhuǎn)發(fā),溝通的作用。
在Startup.cs中連接需要使用的存儲(chǔ)庫:
Web.config數(shù)據(jù)庫連接配置:
1.MS SQL Server中:
2.MySQL中:
運(yùn)行程序,訪問調(diào)度控制面板:
當(dāng)我們已經(jīng)完成了上面的相關(guān)配置后,且程序能夠正常無bug的運(yùn)行時(shí),我們的Hangfire Dashboard(儀表盤)在我們的本地就可以正常訪問了(Hangfire儀表盤默認(rèn)只支持本地訪問),假如需要遠(yuǎn)程可訪問的話我們還需要做對(duì)應(yīng)的配置授權(quán)操作!
運(yùn)行成功,查看數(shù)據(jù)庫中是否生成了與Hangfire相關(guān)的表:
首次運(yùn)行成功后,打開數(shù)據(jù)庫可以看到Hangfire已經(jīng)自動(dòng)為我們創(chuàng)建了定時(shí)任務(wù)的一些定時(shí)任務(wù)列表,定時(shí)隊(duì)列,服務(wù),狀態(tài)等相關(guān)的數(shù)據(jù)表(展現(xiàn)了Hangfire作用的持久化特性),如下圖所示:
a.MS SQL Server中生成的表:
b.MySQL中生成的表:
訪問調(diào)度控制面板:
本地訪問方式:https://localhost:端口號(hào)/hangfire/
調(diào)度控制面板效果圖:
后臺(tái)常用任務(wù)調(diào)度創(chuàng)建和使用:
注意:WriteLog是自己封裝的一個(gè)通用記錄日志的方法!
//延遲任務(wù)執(zhí)行:不是馬上調(diào)用方法,而是設(shè)定一個(gè)未來時(shí)間點(diǎn)再來執(zhí)行,延遲作業(yè)僅執(zhí)行一次varjobId = BackgroundJob.Schedule(=WriteLog( "一天后的延遲任務(wù)執(zhí)行了!"),TimeSpan .FromDays( 1)); //一天后執(zhí)行該任務(wù)
//循環(huán)任務(wù)執(zhí)行:一行代碼添加重復(fù)執(zhí)行的任務(wù),其內(nèi)置了常見的時(shí)間循環(huán)模式,也可基于CRON表達(dá)式來設(shè)定復(fù)雜的模式?!居玫谋容^的多】RecurringJob.AddOrUpdate( = WriteLog( "每分鐘執(zhí)行任務(wù)!"), Cron.Minutely); //注意最小單位是分鐘
//延續(xù)性任務(wù)執(zhí)行:類似于.NET中的Task,可以在第一個(gè)任務(wù)執(zhí)行完之后緊接著再次執(zhí)行另外的任務(wù)BackgroundJob.ContinueWith(jobId, = WriteLog( "連續(xù)任務(wù)!"));
總結(jié):
通過本次項(xiàng)目實(shí)踐的確讓我感受到了Hangfire的魅力所在,真的可以說是上手簡(jiǎn)單,開箱即用的一個(gè)任務(wù)調(diào)度框架。并且該框架做的最好的是,官方文檔詳細(xì),并且還提供了完整的demo示例。最后要為Hangfire的作者點(diǎn)贊!
Hangfire相關(guān)使用學(xué)習(xí)資料:
官網(wǎng)地址:https://www.hangfire.io/
GitHub源碼:https://github.com/HangfireIO/Hangfire
中文文檔:https://www.bookstack.cn/read/Hangfire-zh-official/README.md
GitHub使用示例源碼:https://github.com/HangfireIO/Hangfire.Samples(包括控制臺(tái)應(yīng)用程序,window服務(wù),ASP.NET MVC,WebForm)
Hangfire使用文章匯總:https://www.bbsmax.com/R/xl56E0nrJr/
了解作者獲取更多學(xué)習(xí)資料
加入DotNetGuide技術(shù)交流群
程序員常用的開發(fā)工具軟件推薦
C#/.NET/.NET Core推薦學(xué)習(xí)書籍
C#/.NET/.NET Core學(xué)習(xí)視頻匯總
C#/.NET/.NET Core優(yōu)秀項(xiàng)目框架推薦
C#/.NET/.NET Core面試寶典(基礎(chǔ)版)
C#/.NET/.NET Core學(xué)習(xí)、工作、面試指南
值得推薦的.NET/.NET Core ORM框架資源匯總
值得推薦的ASP.NET Core開發(fā)者學(xué)習(xí)指南路線圖
學(xué)習(xí)是一個(gè)永無止境的過程,你知道的越多,你不知道的也會(huì)越多,在有限的時(shí)間內(nèi)堅(jiān)持每天多學(xué)一點(diǎn),你一定能成為你想要成為的那個(gè)人。不積跬步無以至千里,不積小流無以成江河?。?!
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。