原文由Rector首發於 碼友網 之 《C#/.NET/.NET Core應用程序編程中實現定時任務調度的方法或者組件有哪些,Timer,FluentScheduler,TaskScheduler,Gofer.NET,Coravel,Quartz.NET仍是Hangfire》git
C#/.NET/.NET Core的定時任務調度組件你用過那些呢,是Timer
,FluentScheduler
,TaskScheduler
,Gofer.NET
,Coravel
,Quartz.NET
仍是Hangfire
,又或者是其餘的定時任務調度框架/組件呢?你經常使用的實現定時任務調度的方法又是怎樣的呢?github
定時任務,任務調度這些詞在程序開發中會被常常說起。定時任務是什麼?在計算機的世界裏,定時任務就是在指定的時間或者時間範圍內,按照必定的頻率完成指定的指令。它是一個具備週期性,規律性的活動。web
定時任務能夠是:早上按時叫你起牀的鬧鐘,記錄並提醒你日程的日曆或者生日問候,某網站定時給你的週刊、月刊消息推送,某系統週期性作的每日、月度、年度數據彙總,等等。數據庫
因而可知,定時任務與咱們的生活、工做緊密聯繫在一塊兒。特別地,對於咱們開發人員來講,但凡要實現週期性地操做,就須要使用定時任務來處理。編程
那麼,對於C#/.NET開發人員來講,如何實現定時任務,實現定時任務又有哪些方法或者有哪些組件呢?這些問題對於從事C#/.NET的開發者,特別是剛入行不久或者經驗欠缺者來講將會是比較困擾的問題。api
今天Rector就收集整理一些C#/.NET/.NET Core應用程序編程開發中經常使用的實現定時任務調度的方法或者定時任務調度組件。緩存
Timer是.NET內置的定時器類,它位於命名空間System.Timers
下。Timer是一個基於服務器端的計時器,提供了Interval
屬性來設置重複觸發定時任務的間隔(單位爲毫秒),觸發事件則由Elapsed
事件來指定。另外,還能夠經過AutoReset
屬性來設置Timer的Elapsed
事件只觸發一次或者重複觸發。服務器
官方地址: https://docs.microsoft.com/en...mvc
特性app
FluentScheduler是由一位巴西的.NET開發者Talles L開發並維護的.NET平臺下的一款自動定時任務調度器組件,它提供了比較豐富的定時任務調度接口,開發者能夠快速方便地經過接口設置調度時間,好比:間隔1秒,2秒...n秒,只執行一次,哪月的哪一天等等。具體請參考我以前寫過的兩篇關於FluentScheduler的文章:
官方地址: https://github.com/fluentsche...
特性
TaskScheduler是一個爲Windows任務調度程序提供.NET的封裝組件,能夠代替Windows操做系統自帶的定時任務使用,提供了代碼和編輯器兩種方式建立定時任務。它聚合了多個版本,並提供編輯調度編輯器以快速建立定時任務。
官方地址: https://github.com/dahall/Tas...
特性
Gofer.NET是支持分佈式的任務/做業調度組件,能夠運行在.NET Core應用程序中。
官方地址: https://github.com/brthor/Gof...
特性
Coravel是一個零配置的基於.NET標準庫的微組件,它包含了定時任務調度,緩存,隊列,事件廣播等等功能。
官方地址: https://docs.coravel.net/Sche...
Quartz.NET是一個開源的定時做業調度項目,旨在建立一個免費商業使用的做業調度器,同時具備「企業級」的特性。Quartz.NET目前的版本是支持跨平臺的,即支持.NET和.NET Core的應用程序。
官方地址: http://www.quartz-scheduler.net/
特性
具體使用可參考《基於ASP.NET MVC(C#)和Quartz.Net組件實現的定時執行任務調度》
Hangfire是一個支持.NET和.NET Core應用程序的跨平臺的後臺做業處理框架,使用Hangfire時再也不須要Windows服務或者單獨的進程。Hangfire能夠在ASP.NET/ASP.NET Core等應用程序中以簡單的方式實現觸發,延遲以及定時執行等任務。同時還支持CPU和I/O密集型、長時間運行和短期運行的做業而不須要設置Windows服務或者其餘的任務調度。Hangfire支持多種數據存儲方式,如:Redis, SQL Server, SQL Azure和MSMQ等。
官方地址: https://www.hangfire.io
特性
本文旨在爲你們收集整理.NET/.NET Core中經常使用的定時任務框架和組件,但願對你有幫助。
若是你還有其餘的或者更好的框架/組件,歡迎留言反饋。
碼友網:一個專一.NET/.NET Core開發的編程愛好者社區