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
  • 前言 插件化的需求主要源於對軟體架構靈活性的追求,特別是在開發大型、複雜或需要不斷更新的軟體系統時,插件化可以提高軟體系統的可擴展性、可定製性、隔離性、安全性、可維護性、模塊化、易於升級和更新以及支持第三方開發等方面的能力,從而滿足不斷變化的業務需求和技術挑戰。 一、插件化探索 在WPF中我們想要開 ...
  • 歡迎ReaLTaiizor是一個用戶友好的、以設計為中心的.NET WinForms項目控制項庫,包含廣泛的組件。您可以使用不同的主題選項對項目進行個性化設置,並自定義用戶控制項,以使您的應用程式更加專業。 項目地址:https://github.com/Taiizor/ReaLTaiizor 步驟1: ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • Channel 是乾什麼的 The System.Threading.Channels namespace provides a set of synchronization data structures for passing data between producers and consume ...
  • efcore如何優雅的實現按年分庫按月分表 介紹 本文ShardinfCore版本 本期主角: ShardingCore 一款ef-core下高性能、輕量級針對分表分庫讀寫分離的解決方案,具有零依賴、零學習成本、零業務代碼入侵適配 距離上次發文.net相關的已經有很久了,期間一直在從事java相關的 ...
  • 前言 Spacesniffer 是一個免費的文件掃描工具,通過使用樹狀圖可視化佈局,可以立即瞭解大文件夾的位置,幫助用戶處理找到這些文件夾 當前系統C盤空間 清理後系統C盤空間 下載 Spacesniffer 下載地址:https://spacesniffer.en.softonic.com/dow ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • 一、ReZero簡介 ReZero是一款.NET中間件 : 全網唯一開源界面操作就能生成API , 可以集成到任何.NET6+ API項目,無破壞性,也可讓非.NET用戶使用exe文件 免費開源:MIT最寬鬆協議 , 一直從事開源事業十年,一直堅持開源 1.1 純ReZero開發 適合.Net Co ...
  • 一:背景 1. 講故事 停了一個月沒有更新文章了,主要是忙於寫 C#內功修煉系列的PPT,現在基本上接近尾聲,可以回頭繼續更新這段時間分析dump的一些事故報告,有朋友微信上找到我,說他們的系統出現了大量的http超時,程式不響應處理了,讓我幫忙看下怎麼回事,dump也抓到了。 二:WinDbg分析 ...
  • 開始做項目管理了(本人3年java,來到這邊之後真沒想到...),天天開會溝通整理需求,他們講話的時候忙裡偷閑整理一下常用的方法,其實語言還是有共通性的,基本上看到方法名就大概能猜出來用法。出去打水的時候看到外面太陽好好,真想在外面坐著曬太陽,回來的時候好兄弟三年前送給我的鍵盤D鍵不靈了,在打"等待 ...