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

news/2024/11/14 13:48:46/

在前一篇文章,我们了解了如何通过.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开发定时任务管理页面的全部内容,旨在抛砖引玉,一起学习,共同进步。


http://www.ppmy.cn/news/38230.html

相关文章

Docker基础操作

关于Docker(https://hub.docker.com/)微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署&am…

SpringBoot入门

1.2 SpringBoot是什么 Spring Boot是基于Spring开发的全新框架,相当于对Spring做了又一层封装。 ​ 其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。(…

C++ | 深度探索类的六大天选之子【附综合实战,建议收藏】

文章约六万余字,篇幅较长,建议电脑端访问💻 文章目录一、前言二、构造函数1、概念2、特性三、析构函数1、概念2、特性C与COJ题对比【手动挡与自动挡】四、拷贝构造函数【⭐】1、概念解析2、内置类型与自定义类型【调试观察】3、深入探究拷贝构…

【从零开始学习 UVM】6.6、UVM 激励产生 —— UVM Virtual Sequence【重要】

文章目录 使用virtual sequencer不使用virtual sequencervirtual sequence是一个容器,用于在环境中的virtual sequencer上启动多个sequence。 这个virtual sequence通常由一个具有对真实sequencers句柄的virtual sequencers执行。 需要virtual sequence的原因是当您需要在不…

【算法模板】前缀和与差分

前缀和🎈 输入一个长度为 n 的整数序列。 接下来再输入 m 个询问,每个询问输入一对 l,r。 对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。 输入格式 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示…

RocketMQ学习笔记:消息发送模式

这是本人学习的总结,主要学习资料如下 马士兵教育 目录1、消息发送模式2、消息消费模式3、顺序消息的消费和发送3.1、全局顺序3.2、部分顺序3.3、部分顺序代码样例3.3.1、依赖3.3.2、发送信息3.3.3、接受信息4、延时消息的消费和发送4.1、代码样例5、批量发送消息5…

【系统可靠性】搭建可靠性系统工程实践

系统可靠性:互联网时代的挑战 SLA保证 事故时长45 分钟内--4个9 事故时长5小时--打破 3个9的承诺 事故细节:亚马逊 6 页纸 技术细节 系统可靠性 影响半径---->从低往上扩大;从上往下是依赖;单节点是root caus…

C++ [内存管理]

本文已收录至《C语言》专栏! 作者:ARMCSKGT 目录 前言 正文 计算机中内存分布 C语言的内存管理 内存申请函数 内存释放函数 C内存管理 new操作符 delete操作符 特性总结 注意 原理探究 operator new和operator delete函数 operator new的底层…