ASP.NET MVC 5實現基於Quartz.net 的任務排程管理平臺(一)
阿新 • • 發佈:2019-01-05
任務管理平臺
系統簡介
Quartz.net是一個開源的任務排程工具,相當於資料庫中的 Job、Windows 的計劃任務、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精細,對任務排程的領域問題進行了高度的抽象,實現作業的靈活排程。
任務管理平臺通過window服務來整合Quartz.net 實現作業的排程,只需要修改配置檔案和新增相應Job即可完成作業新增,使用簡單方便。
專案結構
系統目前包含八個專案組成:
- TaskManager.HouTai_New (任務後臺管理系統,任務)
- TaskManager.Tasks (所有作業任務的集合,目前只有一個TestJob)
- TaskManager.ServiceBus (整合Quartz.net window服務,通過window服務來承載排程TaskManager.Tasks 的各個任務Job)
- TaskManager.TaskUtility (操作任務的公共類庫)
- TaskManager.Utility (整個平臺的公共類庫)
- TaskManager.Models
- TaskManager.BLL
- TaskManager.DAL
系統配置
系統中所有的作業資訊,都儲存在資料庫或是配置檔案中。window 宿主服務啟動時,會自動讀取相應的配置的job任務,完成任務的初始化和排程。
其他
1. TaskManager 支援資料庫配置和配置檔案配置兩種方式。如果不需要後臺管理端,也可以直接使用 window 服務 + 配置檔案的模式。
2. web管理後臺的初始登入賬戶:admin test123
Model層實體類相關:
PageOf.cs
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace TaskManager.Models
{
public class PageOf<T>
{
/// <summary>
/// 資訊物件列表
/// </summary>
public IList<T> Items { get; set; }
/// <summary>
/// 總數
/// </summary>
public int Total { get; set; }
/// <summary>
/// 頁碼
/// </summary>
public int PageIndex { get; set; }
/// <summary>
/// 頁大小
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 記錄總數
/// </summary>
public int RowCount { get; set; }
}
}
TaskModel.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TaskManager.Models
{
/// <summary>
/// 任務實體
/// </summary>
public class TaskModel
{
/// <summary>
/// 任務ID
/// </summary>
public Guid TaskID { get; set; }
/// <summary>
/// 任務名稱
/// </summary>
public string TaskName { get; set; }
/// <summary>
/// 任務執行引數
/// </summary>
public string TaskParam { get; set; }
/// <summary>
/// 執行頻率設定
/// </summary>
public string CronExpressionString { get; set; }
/// <summary>
/// 任務運頻率中文說明
/// </summary>
public string CronRemark { get; set; }
/// <summary>
/// 任務所在DLL對應的程式集名稱
/// </summary>
public string AssemblyName { get; set; }
/// <summary>
/// 任務所在類
/// </summary>
public string ClassName { get; set; }
public TaskStatus Status { get; set; }
/// <summary>
/// 任務建立時間
/// </summary>
public DateTime? CreatedTime { get; set; }
/// <summary>
/// 任務修改時間
/// </summary>
public DateTime? ModifyTime { get; set; }
/// <summary>
/// 任務最近執行時間
/// </summary>
public DateTime? RecentRunTime { get; set; }
/// <summary>
/// 任務下次執行時間
/// </summary>
public DateTime? NextFireTime { get; set; }
/// <summary>
/// 任務備註
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 是否刪除
/// </summary>
public int IsDelete { get; set; }
}
}
TaskStatus.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TaskManager.Models
{
/// <summary>
/// 任務狀態列舉
/// </summary>
public enum TaskStatus
{
/// <summary>
/// 執行狀態
/// </summary>
RUN = 1,
/// <summary>
/// 停止狀態
/// </summary>
STOP = 0
}
/// <summary>
/// 任務配置的方式
/// </summary>
public enum TaskStore
{
DB = 1,
XML = 2
}
}
UserModel.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TaskManager.Models
{
public class UserModel
{
public int UserId { get; set; }
public string UserName { get; set; }
public string PassWord { get; set; }
public string TrueName { get; set; }
public string UserEmail { get; set; }
public string PhoneNum { get; set; }
public int IsAdmin { get; set; }
public int Status { get; set; }
public DateTime? CreateTime { get; set; }
public DateTime? LastLoginTime { get; set; }
}
}