在前一篇文章,我們瞭解瞭如何通過.NET6+Quartz開發基於控制台應用程式的定時任務,今天繼續在之前的基礎上,進一步講解基於ASP.NET Core MVC+Quartz實現定時任務的可視化管理頁面,僅供學習分享使用,如有不足之處,還請指正。 涉及知識點 Quartz組件,關於Quartz組件的 ...
在前一篇文章,我們瞭解瞭如何通過.NET6+Quartz開發基於控制台應用程式的定時任務,今天繼續在之前的基礎上,進一步講解基於ASP.NET Core MVC+Quartz實現定時任務的可視化管理頁面,僅供學習分享使用,如有不足之處,還請指正。
涉及知識點
- Quartz組件,關於Quartz組件的基本介紹,可參考前一篇文章或官網。
- GZY.Quartz.MUI,基於Quartz的定時任務維護UI,具有新增,刪除,啟動,停止等功能,之處DLL和WebAPI介面調用兩種模式。
創建ASP.NET Core MVC項目
在Visual Studio 2022中,首先創建基於ASP.NET Core MVC 的項目,根據步驟進行創建即可,如下所示:
安裝組件
項目創建成功後,通過NuGet包管理器,安裝對應組件,本示例僅演示Quartz相關內容,所以只需要安裝相關組件即可,如下所示:
組件註入
組件安裝後,需要在Progrom.cs中進行註入,才可以在啟動時載入對應內容。如下所示:
1 using GZY.Quartz.MUI.Extensions; 2 using QuartzAdmin.QuartzA; 3 4 var builder = WebApplication.CreateBuilder(args); 5 // Add services to the container. 6 builder.Services.AddControllersWithViews(); 7 builder.Services.AddControllers(); 8 //1. 添加QuartzUI服務 9 builder.Services.AddQuartzUI(); 10 //2. 添加基於DLL模式的Quartz任務支持 11 builder.Services.AddQuartzClassJobs(); 12 var app = builder.Build(); 13 14 // Configure the HTTP request pipeline. 15 if (!app.Environment.IsDevelopment()) 16 { 17 app.UseExceptionHandler("/Home/Error"); 18 // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. 19 app.UseHsts(); 20 } 21 22 app.UseHttpsRedirection(); 23 app.UseStaticFiles(); 24 25 app.UseRouting(); 26 27 app.UseAuthorization(); 28 //3.使用Quartz組件 29 app.UseQuartz(); 30 31 app.MapControllerRoute( 32 name: "default", 33 pattern: "{controller=Home}/{action=Index}/{id?}"); 34 //在Use中註冊單例實例 35 app.Use(async (context, next) => 36 { 37 38 39 if (next != null) 40 { 41 await next.Invoke(); 42 } 43 }); 44 app.Run();
運行測試
在配置好後,運行程式,預設打開的是首頁,手動輸入網址https://localhost:7172/QuartzUI,即可看到Quartz管理頁面,如下所示:
基於DLL的定時任務
在小型項目中,如果為了定時任務,再去創建WebAPI介面,會比較麻煩,所以基於DLL方式的任務更常見,在Quartz框架下,創建基於DLL方式的任務,需要實現IJobService介面,此介面是GZY.Quartz.MUI組件庫自帶的預設介面,如下所示:
1 using GZY.Quartz.MUI.BaseService; 2 3 namespace QuartzAdmin.QuartzA.Job 4 { 5 public class TestJob : IJobService 6 { 7 public string ExecuteService(string parameter) 8 { 9 Console.WriteLine($"測試任務被執行了:{parameter}."); 10 return String.Empty; 11 } 12 } 13 }
任務創建成功後,在頁面新建任務時,選擇DLL方式,會自動識別TestJob,選擇即可,如下所示:
基於WebAPI的定時任務
基於WebAPI的定時任務,是所有的WebAPI介面都可以作為調用的任務,無需特殊處理。在ASP.NET Core MVC項目中,預設情況下是支持WebAPI的,首先創建測試WebAPI介面,如下所示:
1 using Microsoft.AspNetCore.Http; 2 using Microsoft.AspNetCore.Mvc; 3 4 namespace QuartzAdmin.Controllers 5 { 6 [Route("api/[controller]/[action]")] 7 [ApiController] 8 public class TestApiController : ControllerBase 9 { 10 [HttpGet] 11 public void Test(string parameters) 12 { 13 Console.WriteLine($"test web api {parameters},---{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"); 14 } 15 } 16 }
在任務管理頁面,新建任務,任務類型選擇API,URL就是WebAPI的介面網址,如下所示:
啟動與暫停任務
預設情況下,創建的任務是停止狀態,選擇任務,開啟任務即可。如果任務正在運行,也可以暫停任務。或者刪除任務。如下所示:
查看任務執行記錄
通過點擊具體任務右側的執行記錄按鈕,可以查看執行日誌。如果有執行過程中有錯誤,也會顯示,成功則不顯示任何信息,如下所示:
好了,以上就是ASP.NET Core MVC+Quartz開發定時任務管理頁面的全部內容,旨在拋磚引玉,一起學習,共同進步。
作者:小六公子
出處:http://www.cnblogs.com/hsiang/
本文版權歸作者和博客園共有,寫文不易,支持原創,歡迎轉載【點贊】,轉載請保留此段聲明,且在文章頁面明顯位置給出原文連接,謝謝。
關註個人公眾號,定時同步更新技術及職場文章