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

来源:https://www.cnblogs.com/hsiang/archive/2023/03/29/17267296.html
-Advertisement-
Play Games

在前一篇文章,我們瞭解瞭如何通過.NET6+Quartz開發基於控制台應用程式的定時任務,今天繼續在之前的基礎上,進一步講解基於ASP.NET Core MVC+Quartz實現定時任務的可視化管理頁面,僅供學習分享使用,如有不足之處,還請指正。 涉及知識點 Quartz組件,關於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開發定時任務管理頁面的全部內容,旨在拋磚引玉,一起學習,共同進步。


作者:小六公子
出處:http://www.cnblogs.com/hsiang/
本文版權歸作者和博客園共有,寫文不易,支持原創,歡迎轉載【點贊】,轉載請保留此段聲明,且在文章頁面明顯位置給出原文連接,謝謝。
關註個人公眾號,定時同步更新技術及職場文章


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 功能實現02 6.功能05-顯示家居信息 6.1需求分析 進入後臺系統,可以在頁面進行所有家居信息的展示 6.2思路分析 完成從後端代碼從mapper(dao層)-->Service層-->Controller層,並對代碼進行測試 完成前端代碼,使用axios發送http請求,返回所有家居信息,將數 ...
  • 使用 VLD 記憶體泄漏檢測工具輔助開發時整理的學習筆記。本篇介紹 VLD 配置文件中配置項 StartDisabled 的使用方法。 ...
  • QAbstractBUtton: 所有按鈕控制項的基類 提供按鈕的通用功能 繼承自QWidget 屬於抽象類別,不能直接去使用,必須藉助於子類(除非你覺得子類不夠用,想自定義一個按鈕) 大部分功能之前已經使用過,在這裡只作簡單介紹 文本設置: setText(str) :設置按鈕提示文本 text() ...
  • 推薦一些學習qml教程 Qt官方的QML教程: https://doc.qt.io/qt-5/qtqml-index.html 這是一個由Qt官方提供的完整的QML教程,包含了所有基本知識和高級語法。 QML中文網:http://www.qmlcn.com/ 這是一個非常不錯的中文QML學習網站,提 ...
  • 面向對象2 訪問修飾符 | | private | default | protected | public | | | | | | | | 當前類 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_che ...
  • JavaSE 運算符 算術運算符:+,-,*,/,%,++(自增),--(自減) i++:先用後+1;++i:先+1後用 賦值運算符:= 擴展賦值運算符:+=,-=,*=,/= a+=b >a=a+b: ​ 可讀性差,但是編譯效率高,且會自動進行類型轉換; ​ 當ab為基本數據類型時,a+b和b+a ...
  • NX中的checkmate功能是用於檢查模型、圖紙數據的工具,在UGOPEN中有例子。手動操作可以檢查已載入的裝配下所有零部件,可以設置通過後保存模型,檢查結果保存到Teamcenter中,預設保存在零組件版本下。 代碼中可以設置多個檢查規則。相關設置可以在用戶預設設置中進行設置。 1 // 2 / ...
  • 面向對象1 面向對象,更在乎的結果,而過程的實現並不重要 IDea快捷鍵(基礎版) | 快捷鍵 | 作用 | | | | | ctrl + / | 快捷註釋 | | ctrl + shift + / | 多行註釋 | | ctrl + d | 快速複製 | | ctrl + shift + up/d ...
一周排行
    -Advertisement-
    Play Games
  • 在一些複雜的業務表中間查詢數據,有時候操作會比較複雜一些,不過基於SqlSugar的相關操作,處理的代碼會比較簡單一些,以前我在隨筆《基於SqlSugar的開發框架循序漸進介紹(2)-- 基於中間表的查詢處理》介紹過基於主表和中間表的聯合查詢,而往往實際會比這個會複雜一些。本篇隨筆介紹聯合多個表進行... ...
  • 從按鈕、文本框到下拉框、列表框,WPF提供了一系列常用控制項,每個控制項都有自己獨特的特性和用途。通過靈活的佈局容器,如網格、堆棧面板和換行面板,我們可以將這些控制項組合在一起,實現複雜的界面佈局。而通過樣式和模板,我們可以輕鬆地定製控制項的外觀和行為,以符合我們的設計需求。本篇記錄WPF入門需要瞭解的樣式... ...
  • 以MySQL資料庫為例 # 一. 安裝 NuGet搜索Dapper.Lite並安裝最新版本。 ![](https://img2023.cnblogs.com/blog/174862/202306/174862-20230602155913303-757935399.jpg) NuGet搜索MySql ...
  • # 圖片介面JWT鑒權實現 # 前言 之前做了個返回圖片鏈接的介面,然後沒做授權,然後今天鍵盤到了,也是用JWT來做介面的許可權控制。 然後JTW網上已經有很多文章來說怎麼用了,這裡就不做多的解釋了,如果不懂的可以參考下列鏈接的 文章。 圖片介面文章:[還在愁個人博客沒有圖片放?](https://w ...
  • ![線程各屬性縱覽](https://img2023.cnblogs.com/blog/1220983/202306/1220983-20230603114109107-477345835.png) 如上圖所示,線程有四個屬性: - 線程ID - 線程名稱 - 守護線程 - 線程優先順序 ### 1. ...
  • 本次主要介紹golang中的標準庫`bytes`,基本上參考了 [位元組 | bytes](https://cloud.tencent.com/developer/section/1140520) 、[Golang標準庫——bytes](https://www.jianshu.com/p/e6f7f2 ...
  • 歡迎來到本篇文章!通過上一篇什麼是 Spring?為什麼學它?的學習,我們知道了 Spring 的基本概念,知道什麼是 Spring,以及為什麼學習 Spring。今天,這篇就來說說 Spring 中的核心概念之一 IoC。 ...
  • # 2022版本IDEA+Maven+Tomcat的第一個程式(傻瓜教學) ​ 作為學習Javaweb的一個重要環節,如何實現在IDEA中利用Maven工具創建一個Javaweb程式模版並連接Tomcat發佈是非常重要的。我比較愚鈍(小白),而且自身電腦先前運行過spring或maven的程式,系統 ...
  • 本篇專門扯一下有關 QCheckBox 組件的一個問題。老周不水字數,直接上程式,你看了就明白。 #include <QApplication> #include <QWidget> #include <QPushButton> #include <QCheckBox> #include <QVBo ...
  • # 1.列表數據元素排序 在創建的列表中,數據元素的排列順序常常是無法預測的。這雖然在大多數情況下都是不可避免的,但經常需要以特定的順序呈現信息。有時候希望保留列表數據元素最初的排列順序,而有時候又需要調整排列順序。python提供了很多列表數據元素排序的方式,可根據情況選用。 ## 1.永久性排序 ...