使用Nancy打造TaskManager2.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.其它可自行摸索

回到顶部

总结

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

   关于如何下载下面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


相关文章

  • 开源任务管理平台TaskManager介绍

  • Nancy Web框架

  • NancyFx系列之 Hello World

  • Nancy之基于Nancy.Hosting.Aspnet 的小Demo

  • NancyFx系列之 Hello World


原文地址:http://www.cnblogs.com/yanweidie/p/5297593.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java对象的序列化与反序列化

转载自 Java对象的序列化与反序列化 序列化与反序列化 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。一般将一个对象存储至一个储存媒介&#xff0c;例如档案或是记亿体缓冲等。在网络传输过程中&#xff0c;可以是字节或是XML等格式。而字节的…

网站能拿到其他网站的cookie_网站能给公司带来哪些好处?

事实上&#xff0c;许多企业仍在努力建立一个网站&#xff0c;因为如果它建立起来&#xff0c;它需要一笔钱和其他费用。但此时客户业务不太好&#xff0c;企业客户需要考虑很多问题&#xff0c;但创建网站的企业已经尝到了甜头。其实有些朋友可能会有一些偏差。例如&#xff0…

笨办法学习@ConditionalOnProperty 烧脑配置记录

前言 今天继续学习springboot时&#xff0c;一不小心就被ConditionalOnProperty注解的配置真假搞得我真的变得真真假假了。。&#xff08;此为真&#xff0c;彼为假&#xff0c;到底你是真还是你是假&#xff0c;晕了晕了。。。&#xff09; 本片主要记录一下注解的真假情况 …

javaI/O流小结

【README】 1.本文总结java IO读取或写入数据的方式和相关类说明&#xff1b; 2.java IO建立在流之上的。输入流读取数据&#xff0c;输出流写入数据&#xff1b; 3.过滤器流-filter stream&#xff0c;可以串连&#xff08;修饰&#xff09;到输入流和输出流上&#xff1b;…

送给微软中文.NET社区的一份礼物,.NET FM

自报家门 大家好&#xff0c;我是.NET FM。做为一档专业而轻松的播客节目&#xff0c;在今后的日子里&#xff0c;我将为你奉上有关.NET和微软公司其他技术的新鲜资讯&#xff08;偷偷讲下&#xff0c;还有各种八卦哦&#xff09;。 Lex Li的回忆 认识吕鹏同学真的是非常偶然…

你真的以为你了解Java的序列化了吗

转载自 你真的以为你了解Java的序列化了吗 上一篇文章《Java对象的序列化与反序列化》中&#xff0c;简单介绍了Java中对象的序列化和反序列化的一些基础知识。看文那篇文章后&#xff0c;有小伙伴留言说&#xff1a;我终于了解了Java的序列化了。我只想说&#xff1a;小伙子&a…

SpringBoot配置mybatis-mysql数据源

前言 学习SpringBoot整合mybatis mysql配置&#xff0c;首先需要了解什么是ORM(对象映射关系)框架&#xff0c;ORM&#xff08;Object Relational Mapping&#xff09;对象关系映射&#xff0c;是 一种为了解决面向对象与关系型数据库不匹配而出现的技术&#xff0c;使开发者…

编程猜单词游戏python_Python实现简单的猜单词小游戏

本文实例为大家分享了Python实现猜单词小游戏的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 思路 1、一个words列表里存放若干的单词&#xff0c;例如&#xff1a;["extends", "private", "static", "public"]2、在words…

java URL和URI

【README】 本文阐述了 URL&#xff0c; URI&#xff0c;以及对应的java类的api&#xff1b; 1.URI&#xff0c;统一资源标识符&#xff0c;标识互联网上的某个网络资源&#xff0c;标识方式如 名称&#xff0c;位置等&#xff1b;就像人的标识一样&#xff0c;可以通过身份证…

HoloLens开发手记-全息Hologram

全息 Hologram HoloLens使我们可以通过周边世界的光线和声音来创建全息场景和物体&#xff0c;使得它们像真实物体那样。全息场景能够响应你的凝视、手势和语音指令&#xff0c;同时还会和你周边世界的表面交互。借助全息场景&#xff0c;你可以在周边世界创建数码物体。 class…

全网把Map中的hash()分析的最透彻的文章,别无二家。

转载自 全网把Map中的hash()分析的最透彻的文章&#xff0c;别无二家。你知道HashMap中hash方法的具体实现吗&#xff1f; 你知道HashTable、ConcurrentHashMap中hash方法的实现以及原因吗&#xff1f; 你知道为什么要这么实现吗&#xff1f; 你知道为什么JDK 7和JDK 8中hash方…

python下面的代码_解析一下下面的python代码?

class Model(dict, metaclassModelMetaclass): # 初始化, 没啥好说的 def __init__(self, **kw): super(Model, self).__init__(**kw) # 如果取不到值, 报错, 这是一个魔术方法, 使用时直接getattr(obj, key) def __getattr__(self, key): try: return self[key] except KeyErr…

SpringBoot多数据源(主从数据源)配置

&#x1f3b6;前言 学习springboot配置多数据源&#xff0c;先回顾一下springboot配置单数据源的方式 SpringBoot配置mybatis-mysql数据源 &#x1f520;主从数据源搭建 项目依赖 本次记录多数据源配置主要是通过druid mybatis plus aop的形式实现的&#xff0c;mybatis …

(转)HttpURLConnection与 HttpClient 区别

转自&#xff1a; HttpURLConnection与 HttpClient 区别/性能测试对比 - 尚码园HttpURLConnection与HttpClient随笔   目前在工做中遇到的须要各类对接接口的工做&#xff0c;须要用到HTTP的知识&#xff0c;工做完成后想要作一些笔记&#xff0c;原本知识打算把本身写的代码…

Raspkate - 基于.NET的可运行于树莓派的轻量型Web服务器

最近在业余时间玩玩树莓派&#xff0c;刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚&#xff0c;从而控制LED发光二极管的闪烁&#xff0c;后来觉得&#xff0c;是不是可以使用HTML5jQuery等流行的前端技术做一个简单的Web站点&#xff0c;让…

深入分析Java中的length和length()

转载自 深入分析Java中的length和length()在开始正文之前&#xff0c;请你快速回答如下问题&#xff1a;在不使用任何带有自动补全功能IDE的情况下&#xff0c;如何获取一个数组的长度&#xff1f;以及&#xff0c;如何获取一个字符串的长度&#xff1f;这个问题我问过不同水平…

归并排序示例

public class MergeSortMain {public static void main(String[] args) {int[] arr {5, 4, 6, 2, 3, 7, 9, 1, 8};sort(arr);print(arr);}static void sort(int[] arr) {sort(arr, 0, arr.length - 1);}/*** param arr 数组* param leftBound 左边界* param rightBoun…

windows监控txt写入_Windows的bug们

2020/9/26○Doriawinterwindows的锁屏界面我很喜欢&#xff0c;这个壁纸自动切换的模块叫windows聚焦&#xff0c;然而我某天开机时发现图片消失&#xff0c;变味了蓝色背景&#xff0c;如图&#xff1a;因为我的已经修好了&#xff0c;所以在网上找了一张一样的图&#xff0c;…

internet地址java表示

【README】 本文主要总结 internet地址相关知识&#xff0c;及相关的 java 类 &#xff1b; 0&#xff09;ip地址是什么 连接到internet的设备称为节点&#xff0c;计算机节点称为主机&#xff08;host&#xff09;&#xff0c;每个节点至少由一个唯一的数&#xff08;或数字…

微软也加入FB开放计算项目 发布交换机操作系统

微软3月10日宣布了一则震动技术业界的消息&#xff0c;它正式发布了基于Debian Linux的网络交换机操作系统。这款名为“SONiC”&#xff08;Software for Open Networking in the Cloud&#xff09;的软件以前仅供微软内部使用&#xff0c;主要运行在网络交换机上。 这条消息对…