在前一篇文章,我們了解了如何通過.NET6+Quartz開發(fā)基于控制臺應用程序的定時任務,今天繼續(xù)在之前的基礎上,進一步講解基于ASP.NET Core MVC+Quartz實現(xiàn)定時任務的可視化管理頁面,僅供學習分享使用,如有不足之處,還請指正。
涉及知識點
- Quartz組件,關于Quartz組件的基本介紹,可參考前一篇文章或官網(wǎng)。
- GZY.Quartz.MUI,基于Quartz的定時任務維護UI,具有新增,刪除,啟動,停止等功能,之處DLL和WebAPI接口調用兩種模式。
創(chuàng)建ASP.NET Core MVC項目
在Visual Studio 2022中,首先創(chuàng)建基于ASP.NET Core MVC 的項目,根據(jù)步驟進行創(chuàng)建即可,如下所示:
安裝組件
項目創(chuàng)建成功后,通過NuGet包管理器,安裝對應組件,本示例僅演示Quartz相關內(nèi)容,所以只需要安裝相關組件即可,如下所示:
組件注入
組件安裝后,需要在Progrom.cs中進行注入,才可以在啟動時加載對應內(nèi)容。如下所示:
using GZY.Quartz.MUI.Extensions;
using QuartzAdmin.QuartzA;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddControllers();
//1. 添加QuartzUI服務
builder.Services.AddQuartzUI();
//2. 添加基于DLL模式的Quartz任務支持
builder.Services.AddQuartzClassJobs();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
//3.使用Quartz組件
app.UseQuartz();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
//在Use中注冊單例實例
app.Use(async (context, next) =>
{
if (next != null)
{
await next.Invoke();
}
});
app.Run();
運行測試
在配置好后,運行程序,默認打開的是首頁,手動輸入網(wǎng)址https://localhost:7172/QuartzUI,即可看到Quartz管理頁面,如下所示:
基于DLL的定時任務
在小型項目中,如果為了定時任務,再去創(chuàng)建WebAPI接口,會比較麻煩,所以基于DLL方式的任務更常見,在Quartz框架下,創(chuàng)建基于DLL方式的任務,需要實現(xiàn)IJobService接口,此接口是GZY.Quartz.MUI組件庫自帶的默認接口,如下所示:
using GZY.Quartz.MUI.BaseService;
namespace QuartzAdmin.QuartzA.Job
{
public class TestJob : IJobService
{
public string ExecuteService(string parameter)
{
Console.WriteLine($"測試任務被執(zhí)行了:{parameter}.");
return String.Empty;
}
}
}
任務創(chuàng)建成功后,在頁面新建任務時,選擇DLL方式,會自動識別TestJob,選擇即可,如下所示:
基于WebAPI的定時任務
基于WebAPI的定時任務,是所有的WebAPI接口都可以作為調用的任務,無需特殊處理。在ASP.NET Core MVC項目中,默認情況下是支持WebAPI的,首先創(chuàng)建測試WebAPI接口,如下所示:
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace QuartzAdmin.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class TestApiController : ControllerBase
{
[HttpGet]
public void Test(string parameters)
{
Console.WriteLine($"test web api {parameters},---{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
}
}
}
在任務管理頁面,新建任務,任務類型選擇API,URL就是WebAPI的接口網(wǎng)址,如下所示:
啟動與暫停任務
默認情況下,創(chuàng)建的任務是停止狀態(tài),選擇任務,開啟任務即可。如果任務正在運行,也可以暫停任務?;蛘邉h除任務。如下所示:
?查看任務執(zhí)行記錄
通過點擊具體任務右側的執(zhí)行記錄按鈕,可以查看執(zhí)行日志。如果有執(zhí)行過程中有錯誤,也會顯示,成功則不顯示任何信息,如下所示:
文章來源:http://www.zghlxwxcb.cn/news/detail-789256.html
好了,以上就是ASP.NET Core MVC+Quartz開發(fā)定時任務管理頁面的全部內(nèi)容,旨在拋磚引玉,一起學習,共同進步。文章來源地址http://www.zghlxwxcb.cn/news/detail-789256.html
到了這里,關于ASP.NET Core MVC+Quartz實現(xiàn)定時任務可視化管理頁面的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!