开源任务管理平台TaskManagerV2.0介绍及升级说明

  上一篇开源任务管理平台TaskManager介绍发布后,有网友联系我看看能不能做个后台管理界面,方便管理系统中所有的任务。由于时间和技术问题1.0版本的时候,新增了一个3分钟读取配置文件动态修改任务的功能,不过总体来说还是不直观,操作不便捷。刚好最近接触到了Owin,可以实现自己的宿主程序运行Web站点,无需IIS中即可运行后台Web,这里演示的是点击控制台程序运行的结果。最近利用闲暇时间使用该技术实现了后台管理程序,也就是本文要说的TaskManagerV2.0版本。对TaskManagerV1.0版本不了解的可以先看下。最终实现的界面如下,也可以打开这个地址http://tm.myscloud.cn在线浏览。还是之前的老规矩文章末尾会提供程序和源代码下载地址。

阅读目录

回到顶部

V2.0升级说明

  2.0相对于之前的版本最大变化有四点

     1.后台管理程序

      最明显的区别提供了后台管理程序,用户启动TaskManager时,即可通过浏览器进入后台管理系统轻松的配置管理所有任务,方便的查看任务最近运行时间和下一次运行时间。当然后台管理程序站点地址也是可以由用户进行配置的,后面会进行讲解。

     2.多样化宿主程序

     V1.0基于Window服务实现,V2.0可以使用控制台程序,Windows服务 或者传统Web程序来重载。

  3.任务存储方式

系统所有任务存储在数据库中,不再采用1.0版本存储在xml配置文件中。

4.自动以系统管理员方式启动

      在程序启动前会先判断当前是否以管理员方式运行,如果不是则会重启以管理员方式运行

      最重要的变化,Web管理站点无需用户部署在iis中,启动控制台程序或者服务时会自动启动

回到顶部

Cron表达式

    Cron表达式是用来指定任务执行频率的,前面我已经写了一篇Quartz Cron表达式 在线生成器的文章,大家可以直接拿来使用。

回到顶部

开源TaskManagerV2.0实现原理

    TaskManager是基于Quartz.NET和Nancy的一款开源任务管理系统,可以使用Window服务或者控制台程序来承载,Web后台实现采用Nancy Host实现,下一篇将介绍一下这个技术。

    项目结构介绍:

  后台管理站点完全独立于window服务和控制台程序,松耦合。下面看下这两个承载服务是怎么启动后台站点的。

  window服务

  protected override void OnStart(string[] args)
        {
            DebuggableAttribute att = System.Reflection.Assembly.GetExecutingAssembly().GetCustomAttribute<DebuggableAttribute>();
            if (att.IsJITTrackingEnabled)
            {
                //Debug模式才让线程停止10s,方便附加到进程调试
                Thread.Sleep(10000);
            }
            //配置信息读取
            ConfigInit.InitConfig();
            QuartzHelper.InitScheduler();
            QuartzHelper.StartScheduler();

            // 保持web服务运行  
            ThreadPool.QueueUserWorkItem((o) =>
            {
                //启动站点
                Startup.Start(SysConfig.WebPort);
            });
        }

   在window服务启动时,调用了Web程序提供的启动接口。

   控制台程序  

 static void Main(string[] args)
        {
            AdminRun.Run();
            ConfigInit.InitConfig();
            QuartzHelper.InitScheduler();
            QuartzHelper.StartScheduler();
            try
            {
                //启动站点
                using (NancyHost host = Startup.Start(SysConfig.WebPort))
                {
                    //调用系统默认的浏览器   
                    Process.Start("http://127.0.0.1:9000");
                    Console.WriteLine("系统监听站点地址:{0}", "http://127.0.0.1:9000");
                    Console.WriteLine("程序已启动,按任意键退出");
                    Console.ReadLine();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.Read();
        }

回到顶部

使用介绍

  初次使用需要新建数据库,执行发布程序下的SQL合并脚本,修改config配置文件中的数据库连接。

使用Windows服务做为承载器

  那么我们只需要知道怎么安装Windows服务,也就能使用该平台了。这里考虑到很多人不知道怎么安装卸载Windows服务,所以提供了我之前写的一个小工具Windows服务安装卸载。源代码也一起放在了TaskManager里面。

  1.运行Windows安装卸载工具

  2.选择TaskManger.exe-》安装-》运行

 运行成功以后可以在系统管理-》服务 里面找到“定时任务管服务”

运行成功后会生成Logs文件夹,目前系统会分任务记录执行日志,方便使用者查看各个任务的执行情况

 3.浏览器打开http://本机IP:9000 进入后台

 使用控制台程序做为承载器

  点击运行Ywdsoft.Test.exe

 后台管理程序使用介绍

  1.自定义站点端口

  修改Config.config文件,默认端口为9000

 2.编辑界面Cron表达式如何填写

       这里也替大家考虑到了,可以使用在线Cron生成器来生成,地址http://tool.myscloud.cn,也可以使用源代码里面提供的Cron自己部署站点使用。

 3.其它可自行摸索

回到顶部

总结

      本篇要介绍的内容到此结束了,下面到了放出源代码的时间了。敬请期待下一篇!

  GitHub地址:由于SVN地址不稳定,很多网友下载不下来,所以决定将代码托管到GitHub   https://github.com/CrazyJson/TaskManager

      体验工具下载地址:任务管理框架 V2.0

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏嵌入式程序猿

手把手教你在树莓派上搭建web服务器

如何在你的树莓派上搭建一个web服务器呢?因为在搭建服务器的时候需要安装更新软件,但是大家应该知道树莓派默认镜像源在英国,从国内访问会很慢,所以需要更改镜像源到...

4036
来自专栏软件

使用Vmware虚拟机部署开发环境之Mac OS X系统安装

一、使用VMware虚拟机部署Mac开发环境所需工具: Vmware Workstation 14.0虚拟机软件 VM安装Mac解锁工具Unlock 苹...

3518
来自专栏小轻论坛

神秘的C盘里面装了什么?能不能删?

相信大家刚刚接触电脑时,都会被提醒“你可千万别动C盘!”点开一看,密密麻麻的文件夹让人不知所云,也听说过删除C盘文件出现过各种问题的事情,当然,还有很多文件是你...

961
来自专栏YouMeek

使用 Github 空间搭建 Hexo 博客 1–安装篇(基于 IntelliJ IDEA)

部署前介绍 Hexo 是什么 Hexo 的中文官网:http://hexo.io/zh-cn/ 作者 Tommy Chen:https://zespia.tw/...

3368
来自专栏Android 技术栈

Mac搭建Hexo博客流程记录,排雷完成

经过一天的辛苦作战,总算基础的东西出来了。踩了太多的坑,综合我踩坑的经过,明白到,选好一篇引导文很重要!有些步骤不要先做了,不然后面你都不知道怎么死的..

662
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

React Native应用部署/热更新-CodePush最新集成总结(新)

React Native应用部署/热更新-CodePush最新集成总结(新) ---- 更新说明: 此次博文更新适配了最新版的CodePush v1.17....

5206
来自专栏跟着阿笨一起玩NET

ASP.NET 防盗链的实现[HttpHandler]

本文转载:http://www.cnblogs.com/eflylab/archive/2008/06/16/1223373.html

732
来自专栏主机笔记

chevereto图床添加外部存储

前几天用chevereto做一个专门存储图片的网站,但是考虑到主服务器的硬盘和流量都不多,以后可能会支持不了太多的图片使用,就在后台找到原来chevereto提...

3875
来自专栏BIT泽清

React Native应用部署/马甲包热更新-CodePush最新集成总结(2018年最新)

React Native支持大家用React Native技术开发APP,并打包生成一个APP。在动态更新方面React Native只是提供了动态更新的基础,...

380
来自专栏电光石火

Gradle安装使用

简单介绍 Gradle是一个好用的构建工具 使用它的原因是 1、配置相关依赖代码量少,不会像maven一样xml过多 2、打包编译测试发布都有,而且使用起来方便...

2904

扫码关注云+社区