1. 程式人生 > >.Net Core實現基於Quart.Net的任務管理

.Net Core實現基於Quart.Net的任務管理

前段時間給公司專案升級.net框架,把原先的任務管理平臺用.net core實現,現做如下整理: ## 一、實現思路 之前的實現也是參考了部落格園中其他文章實現的思路: 1. 一個任務定義一個實現IJob介面的類,通過單獨的dll管理; 2. 通過資料庫持久化、維護任務,便於服務重啟時任務的恢復; 3. 定義一個管理任務的基礎服務,輪詢資料庫中的任務,根據任務的狀態維護任務的執行; 4. 新增任務時,需要在資料庫中新增一條記錄,並且在任務管理的dll中新增一個實現IJob的類,基礎服務通過反射dll來構建任務的例項新增到排程器中 由於業務程式碼會頻繁調整,我們業務程式碼從任務執行中拆分出來,獨立部署成http服務,任務的執行就是呼叫一個http請求,這樣不同的任務就是請求的url不一樣,檢視官方文件( https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/more-about-jobs.html#job-instances )發現,我們可以通過只建立一個基礎任務類,建立多個該任務類的例項來實現構建多個任務,IJobDetail中可以用JobDataMap物件來儲存Job例項的引數,所以我們通過JobDataMap將請求url傳遞到任務的Execute()方法中,我們只需要在資料庫中補充任務請求的url資訊就可以了,不需要單獨的dll去定義任務。 ## 二、專案結構 根據上面思路,我們只需要一個管理任務的基礎服務、一個Web管理平臺就可以實現,為了保持專案簡單,把任務管理無關的功能合併在一個專案裡,並且儘量排除無關的框架和功能點,最終程式包含3個專案: 1. JobManage.Service:控制檯程式,管理任務的基礎服務,通過Topshelf部署成windows服務,如何部署參考: https://www.cnblogs.com/podolski/p/10054286.html 2. JobManage.Web:Web應用程式,管理平臺,新增、暫停、恢復、刪除任務,檢視任務執行日誌; 3. JobManage.Core:類庫,提供業務基礎服務,如資料庫操作等 動態新增任務: ``` IJobDetail jobDetail = JobBuilder.Create