ASP.NET Core MVC+Quartz實現定時任務可視化管理頁面

在前一篇文章,我們瞭解瞭如何通過.NET6+Quartz開發基於控制檯應用程序的定時任務,今天繼續在之前的基礎上,進一步講解基於ASP.NET Core MVC+Quartz實現定時任務的可視化管理頁面,僅供學習分享使用,如有不足之處,還請指正。

涉及知識點

  1. Quartz組件,關於Quartz組件的基本介紹,可參考前一篇文章或官網。
  2. 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開發定時任務管理頁面的全部內容,旨在拋磚引玉,一起學習,共同進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章