上一篇开源任务管理平台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();
}
//配置信息读取
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.其它可自行摸索

总结

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

   关于如何下载下面SVN代码,我这里稍微介绍一下。这个地址不是在浏览器里面打开的(如果想在浏览器里面预览可以访问:http://code.taobao.org/p/TaskManagerPub/src/Branch/),请使用SVN客户端工具TortoiseSVN->SVN Checkout->输入下面的地址进行下载。

TaskManagerSVN地址:http://code.taobao.org/svn/TaskManagerPub/Branch   使用svn checkout指令进行下载。

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

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

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

如果,想给予我更多的鼓励,求打

因为,我的写作热情也离不开您的肯定支持。

感谢您的阅读,如果您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是焰尾迭 。

开源任务管理平台TaskManagerV2.0介绍及升级说明的更多相关文章

  1. Quartz.net 的开源任务管理平台

    Quartz.net 的开源任务管理平台 前面总结了很多,关于Quartz.net 的文章,介绍了如何使用Quartz.net.不清楚的朋友,可以看我之前的系列文章,http://www.cnblog ...

  2. 开源任务管理平台TaskManager介绍

    很早之前准备写Quartz系列文章,现在终于能够实现了.从本篇开始将带你实现一款自己的任务管理平台.在工作中你曾经需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一 ...

  3. Quartz.NET总结(五)基于Quartz.net 的开源任务管理平台

    前面总结了很多,关于Quartz.net 的文章,介绍了如何使用Quartz.net.不清楚的朋友,可以看我之前的系列文章,http://www.cnblogs.com/zhangweizhong/c ...

  4. 开放平台鉴权以及OAuth2.0介绍

    OAuth 2.0 协议 OAuth是一个开发标准,允许用户授权第三方网站或应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的内容. OAuth 2.0 ...

  5. SNF快速开发平台--规则引擎介绍和使用文档

    设计目标: a) 规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b) 能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c) 运算速度 ...

  6. 开源实体映射框架EmitMapper介绍

    开源实体映射框架EmitMapper介绍   综述       EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/.       Emit ...

  7. 【SPMF开源数据挖掘平台入门】MaxSP算法使用说明

    前段时间,由于项目中用到了序列挖掘的算法,师兄推荐我用用SPMF.在此做个记录. 首先简单介绍一下SPMF: SPMF是一个采用Java开发的开源数据挖掘平台. 它提供了51种数据挖掘算法实现,用于: ...

  8. 我的Android进阶之旅】GitHub 上排名前 100 的 Android 开源库进行简单的介绍

    GitHub Android Libraries Top 100 简介 本文转载于:https://github.com/Freelander/Android_Data/blob/master/And ...

  9. 批量搞机(二):分布式ELK平台、Elasticsearch介绍、Elasticsearch集群安装、ES 插件的安装与使用

    一.分布式ELK平台 ELK的介绍: ELK 是什么? Sina.饿了么.携程.华为.美团.freewheel.畅捷通 .新浪微博.大讲台.魅族.IBM...... 这些公司都在使用 ELK!ELK! ...

随机推荐

  1. Idea开发环境中搭建Maven并且使用Maven打包部署程序

    1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...

  2. github指令

    一般用法 git stash git pull git stash pop 结局冲突 git add . git commit -m "message" git push 查看 g ...

  3. AngularJS Directive 隔离 Scope 数据交互

    什么是隔离 Scope AngularJS 的 directive 默认能共享父 scope 中定义的属性,例如在模版中直接使用父 scope 中的对象和属性.通常使用这种直接共享的方式可以实现一些简 ...

  4. jQuery属性/CSS使用例子

    jQuery属性/CSS 1..attr() 获取匹配的元素集合中的第一个元素的属性的值  或 设置每一个匹配元素的一个或多个属性. 例1:获取元素的属性的值 <p title="段落 ...

  5. Linux2.6内核--进程调度理论

    从1991年Linux的第1版到后来的2.4内核系列,Linux的调度程序都相当简陋,设计近乎原始,见0.11版内核进程调度.当然它很容易理解,但是它在众多可运行进程或者多处理器的环境下都难以胜任. ...

  6. CGGeometry.h 文件详解

    这些是在CGGeometry.h里的 CGPoint.CGSize.CGRect.CGRectEdge实际上都是结构体 struct CGPoint { CGFloat x; CGFloat y; } ...

  7. 进新公司用cornerstone-checkout后遇到的奇葩bug,及解决方法

    从cornerstone中checkout下新的工程,运行报错. 1.开始错误原因是找不到相对应的某个.m文件的路径 解决方案:将缺少的.m文件重新从项目文件夹中导入 2.后来显示 造成的原因是在下面 ...

  8. TortoiseSVN提交提示423 Locked的解决办法

    往svn上提交文件时,文件可能被另一个人占用,这时提交就会报423Locked错误. 此办法是阅读官方文档(TortoiseSVN-1.6.16-zh_CN.pdf) 4.21 锁部分提供的办法: 首 ...

  9. 聊下 git remote prune origin

    在你经常使用的命令当中有一个git branch –a 用来查看所有的分支,包括本地和远程的.但是时间长了你会发现有些分支在远程其实早就被删除了,但是在你本地依然可以看见这些被删除的分支. 你可以通过 ...

  10. nova-compute 部署 instance 详解 - 每天5分钟玩转 OpenStack(28)

    本节讨论 nova-compute,并详细分析 instance 部署的全过程. 先给大家道个歉:今天这篇文章的篇幅比以往要多一些,本来想分两次发,但考虑到文章的完整和系统性,还是一次发了出来,这次可 ...