Quartz.NET是一個強大、開源、輕量的做業調度框架,你可以用它來爲執行一個做業而建立簡單的或複雜的做業調度。它有不少特徵,如:數據庫支持,集羣,插件,支持cron-like表達式等等。在2017年的最後一天Quartz.NET 3.0發佈,正式支持了.NET Core 和async/await。這是一個大版本,有衆多新特性和大的功能html
官網:http://www.quartz-scheduler.net/git
源碼:https://github.com/quartznet/quartznetgithub
示例:https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html 數據庫
新功能框架
- 支持 async/await 基於任務的做業,內部以async/await工做
- 支持.NET Core / netstandard 2.0和.NET Framework 4.5.2及更高版本
- 經過提供程序名稱SQLite-Microsoft支持Microsoft.Data.Sqlite,舊的提供程序SQLite也仍然有效,還能夠用
- 增長了對SQL Server內存優化表的初步支持和Quartz.Impl.AdoJobStore.UpdateLockRowSemaphoreMOT
- 從依賴關係中刪除Common.Logging
- 刪除C5 Collections,使用.NET框架內置的Collections
- 在插件啓動時添加對做業調度XML文件的驗證
- 在TimeZoneUtil中添加對額外自定義時區解析器功能的支持
API 不兼容async
- 做業和插件分離到一個單獨的程序集/ NuGet包裏 Quartz.Jobs和Quartz.Plugins
- ADO.NET提供程序名稱已經簡化,提供程序名稱不帶版本,例如SqlServer-20 => SqlServer
- API方法已經被從新定義,主要使用IReadOnlyCollection,這隱藏了兩個HashSets和List
- LibLog已經隱藏到內部(ILog等),就像它原本打算的那樣
- SimpleThreadPool 消失了,用系統的線程池取代了
- 調度程序方法已經改成基於Task,記得要await 它們
- IJob接口如今返回一個Task
- 一些IList屬性已經更改成IReadOnlyList ,以正確反映意圖
- SQL Server CE支持已被刪除
- DailyCalendar如今使用日期時間排除日期,並具備ISet接口來訪問它們
- IObjectSerializer有新的方法,必須實現 void Initialize()
- IInterruptableJob取消了上下文的CancellationToken
已知的問題ide
- Windows和Linux之間的時區id有問題,它們在同一個區域使用不一樣的ID
- .NET Core的沒有Remoting 支持
此次的版本變化很大,若是你是老用戶,你們要認真看下遷移指南: https://www.quartz-scheduler.net/documentation/quartz-3.x/migration-guide.html優化