ASP.NET MVC 5实现基于Quartz.net 的任务调度管理平台(一)

标签: asp.net  mvc  数据库  windows  任务调度

任务管理平台

系统简介

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; }
    }
}
版权声明:本文为WuLex原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/WuLex/article/details/74058835