任务机制分为两个类型,一是计划任务,二是启动时任务。 计划任务 是系统中实现按时间计划执行某项任务的功能。 应用场景: 固定某个时间执行的任务。 每日执行的任务。 主要对象: Nop.Core.Domain.Tasks ScheduleTask 计划任务实体,定义实体包含的属性。 Nop.Services.Tasks IScheduleTaskService 系统实体业务操作,提供对计划任务的数据的增、删、改、查。 Itask 任务接口,定义计划执行的任务的所需要的方法。 Task 是ScheduleTask的执行时实体,主要用于运行时创建任务和执行任务。 TaskThread 任务线程,主要通过Timer来执行线程。 TaskManager 任务管理者,用于系统运行时,任务功能的管理(初始化、启动、停用) 现有用例 日志清理计划任务(ClearLogTask)。 缓存清理计划任务(ClearCacheTask)。 消息传送任务。 业务流程 编码阶段 添加计划任务数据(ScheduleTask),设定计划任务执行时间和时间间隔。 实现ITask接口,并在接口的Excute方法中实现任务操作。 执行阶段 系统启动时,同时启动TaskManager。 TaskManager获取所有计划任务,并按时间间隔别到不同的TaskThread中。 TaskManager执行所有的TaskThread的计时执行器。 TaskThread计时执行器时间到时执行计划任务。 任务执行完成后重启计时执行器继续上续操作,如果是一次性任务,则完成。 启动时任务 用于系统启动时同时启动的任务。 应用场景 数据连接任务,用于启动时判断数据库连接是否可用。 数据映射任务 主要对象: Nop.Core.Infrastructure IStartupTask 启动时任务规范接口,定义了执行入口和执行优先级。 现有用例 EfStartUpTask 用于数据库初始化工作。 AutoMapperStartupTask 用于数据映身工作。 业务流程 当系统启动时,在Nop引擎(NopEngine.RunStartupTasks)初始化时会获取得所有启动时任务,并执行。 |
|
来自: ThinkTank_引擎 > 《计划任务》