翼度科技»论坛 编程开发 .net 查看内容

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

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
在前一篇文章,我们了解了如何通过.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. 1 using GZY.Quartz.MUI.Extensions;
  2. 2 using QuartzAdmin.QuartzA;
  3. 3
  4. 4 var builder = WebApplication.CreateBuilder(args);
  5. 5 // Add services to the container.
  6. 6 builder.Services.AddControllersWithViews();
  7. 7 builder.Services.AddControllers();
  8. 8 //1. 添加QuartzUI服务
  9. 9 builder.Services.AddQuartzUI();
  10. 10 //2. 添加基于DLL模式的Quartz任务支持
  11. 11 builder.Services.AddQuartzClassJobs();
  12. 12 var app = builder.Build();
  13. 13
  14. 14 // Configure the HTTP request pipeline.
  15. 15 if (!app.Environment.IsDevelopment())
  16. 16 {
  17. 17     app.UseExceptionHandler("/Home/Error");
  18. 18     // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
  19. 19     app.UseHsts();
  20. 20 }
  21. 21
  22. 22 app.UseHttpsRedirection();
  23. 23 app.UseStaticFiles();
  24. 24
  25. 25 app.UseRouting();
  26. 26
  27. 27 app.UseAuthorization();
  28. 28 //3.使用Quartz组件
  29. 29 app.UseQuartz();
  30. 30
  31. 31 app.MapControllerRoute(
  32. 32     name: "default",
  33. 33     pattern: "{controller=Home}/{action=Index}/{id?}");
  34. 34 //在Use中注册单例实例
  35. 35 app.Use(async (context, next) =>
  36. 36 {
  37. 37     
  38. 38     
  39. 39     if (next != null)
  40. 40     {
  41. 41         await next.Invoke();
  42. 42     }
  43. 43 });
  44. 44 app.Run();
复制代码
运行测试

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

 
 基于DLL的定时任务

在小型项目中,如果为了定时任务,再去创建WebAPI接口,会比较麻烦,所以基于DLL方式的任务更常见,在Quartz框架下,创建基于DLL方式的任务,需要实现IJobService接口,此接口是GZY.Quartz.MUI组件库自带的默认接口,如下所示:
  1. 1 using GZY.Quartz.MUI.BaseService;
  2. 2
  3. 3 namespace QuartzAdmin.QuartzA.Job
  4. 4 {
  5. 5     public class TestJob : IJobService
  6. 6     {
  7. 7         public string ExecuteService(string parameter)
  8. 8         {
  9. 9             Console.WriteLine($"测试任务被执行了:{parameter}.");
  10. 10             return String.Empty;
  11. 11         }
  12. 12     }
  13. 13 }
复制代码
任务创建成功后,在页面新建任务时,选择DLL方式,会自动识别TestJob,选择即可,如下所示:

 
 基于WebAPI的定时任务

基于WebAPI的定时任务,是所有的WebAPI接口都可以作为调用的任务,无需特殊处理。在ASP.NET Core MVC项目中,默认情况下是支持WebAPI的,首先创建测试WebAPI接口,如下所示:
  1. 1 using Microsoft.AspNetCore.Http;
  2. 2 using Microsoft.AspNetCore.Mvc;
  3. 3
  4. 4 namespace QuartzAdmin.Controllers
  5. 5 {
  6. 6     [Route("api/[controller]/[action]")]
  7. 7     [ApiController]
  8. 8     public class TestApiController : ControllerBase
  9. 9     {
  10. 10         [HttpGet]
  11. 11         public void Test(string parameters)
  12. 12         {
  13. 13             Console.WriteLine($"test web api {parameters},---{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
  14. 14         }
  15. 15     }
  16. 16 }
复制代码
在任务管理页面,新建任务,任务类型选择API,URL就是WebAPI的接口网址,如下所示:

 
启动与暂停任务

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

 
 查看任务执行记录

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

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

来源:https://www.cnblogs.com/hsiang/archive/2023/03/29/17267296.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具