ASP.NET Core MVC+Quartz实现定时任务可视化管理页面

本文介绍了如何在ASP.NETCoreMVC项目中集成Quartz,创建定时任务的可视化管理页面。通过GZY.Quartz.MUI组件,实现了任务的新增、删除、启动和停止等操作,支持DLL和WebAPI两种任务模式。读者将学习到如何配置项目、安装组件、注入服务以及创建和管理基于DLL和WebAPI的定时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前一篇文章,我们了解了如何通过.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中进行注入,才可以在启动时加载对应内容。如下所示:

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();

运行测试

在配置好后,运行程序,默认打开的是首页,手动输入网址https://localhost:7172/QuartzUI,即可看到Quartz管理页面,如下所示:

基于DLL的定时任务

在小型项目中,如果为了定时任务,再去创建WebAPI接口,会比较麻烦,所以基于DLL方式的任务更常见,在Quartz框架下,创建基于DLL方式的任务,需要实现IJobService接口,此接口是GZY.Quartz.MUI组件库自带的默认接口,如下所示:

using GZY.Quartz.MUI.BaseService;

namespace QuartzAdmin.QuartzA.Job
{
    public class TestJob : IJobService
    {
        public string ExecuteService(string parameter)
        {
            Console.WriteLine($"测试任务被执行了:{parameter}.");
            return String.Empty;
        }
    }
}

任务创建成功后,在页面新建任务时,选择DLL方式,会自动识别TestJob,选择即可,如下所示:

基于WebAPI的定时任务

基于WebAPI的定时任务,是所有的WebAPI接口都可以作为调用的任务,无需特殊处理。在ASP.NET Core MVC项目中,默认情况下是支持WebAPI的,首先创建测试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的接口网址,如下所示:

启动与暂停任务

默认情况下,创建的任务是停止状态,选择任务,开启任务即可。如果任务正在运行,也可以暂停任务。或者删除任务。如下所示:

 查看任务执行记录

通过点击具体任务右侧的执行记录按钮,可以查看执行日志。如果有执行过程中有错误,也会显示,成功则不显示任何信息,如下所示:

好了,以上就是ASP.NET Core MVC+Quartz开发定时任务管理页面的全部内容,旨在抛砖引玉,一起学习,共同进步。

在上一个资源v1.0基础上的增强和改进! 1、解压。解压得到名为"schedule"的目录 2、打开界面。双击里面的schedule v1.1.html打开 3、解除限制。单击浏览器弹出框“允许阻止的内容”,可以看到效果 功能说明: 界面采用bootstrap和JEasyUI技术实现,提供三种任务运行规则:一次性、周期性、自定义 1、一次性(i:立即运行;ii:在规定的时间刻运行) 2、周期性(i:按小时;ii:按天 iii:按周; iv:按月(日);v: 按月(星期) ) 3、自定义(自定义功能,用户可以在前台随意定制执行计划,只要符合spring schedule cronExpression语法) 使用说明: 一: /* line 96 */ var action = "edit";//edit,add,view action用来指定用户动作,新增、编辑(修改)、查看 二: /* line 108 */ var cronExpression = "13 12 11 1 11 ? 2017";//when action is edit or view this value is useful cronExpression 的建意值: cronExpression=""; // action为空时 cronExpression =$("cronExpression");//当action为edit或view时, 把后面传过来的表达式值赋给cronExpression,界面会自动判断该如何展示 三: /* line 628 */ $("#sbmt").click(function() {//按钮事件....} 表单按钮提交事件相关代码自已根据实际情况替换修改。 亮点: i:日期选择功能使用JEasyUI的datetime,并在选择框上加了限制,不能选择早于当前的日期 ii:时间选择功能使用JEasyUI的spinner实现 iii: 自定义功能用户可以随意定制执行计划 iv:采用bootstrap的pills实现tab(选项卡)功能,界面友好 v: 打开修改界面界面会根据后台cronExpression值智能展示tab和radio及表单值。规则:优先顺序:一次性、周期性、自定义 vi: 提交前javascript会对cronExpression进行严格的规则验证 vii: 使用javascript正则表达式实现各定时分类的匹配展示 viii: 强兼容性,集成时能与其它css样式文件兼容,尽量把schedule.html内部样式表中的样式放在目标集成界面中样式的后面避免覆盖 另:内附schdule Spring后台核心代码供后台开发参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老码识途呀

写作不易,多谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值