项目介绍

本项目目的在于完成公司的一些定时调度任务而开发,前期本打算使用Quartz集群方案实现,后发现项目并没有到一定要到集群方案的窘境,就自动跳过了该方案,考虑到一台服务器的异步方案实现。 应用场景

  • 定时执行Job
  • 定时调度接口
  • 定时抽取数据 等场景使用

Quartz.net实现的调度在本人的另一开源地址Quartz定时执行任务

该项目涉及的技术:

  1. 调度配置工具
  • ORM基于Dapper实现
  • 日志采用Nlog实现
  • 数据库Provider基于Devart
  • 数据层整个基于1.1和1.3结合实现
  • 将程序打包为桌面安装程序,采用Microsoft Visual Studio 2010、2015、2017 Installer Projects实现
  1. 调度服务实现
  • 采用Quartz.NET实现的作业调度
  • 采用Topshelf开发服务集成Quartz实现的作业调度
  • 志采用Nlog实现
  • ORM基于Dapper实现
  • 数据库Provider基于Devart
  • 数据层整个基于1.1和1.3结合实现

调度配置项目目录

  • Raise.Monitor
  • Raise.Monitor.Extension
  • Raise.Monitor.Model
  • Raise.Monitor.Utils
  • MonitorSetup

调度配置项目类库介绍

  • Raise.Monitor为调度配置项目的启动项目
  • Raise.Monitor.Extension项目的扩展项
  • Raise.Monitor.Model和数据库交互所使用的实体对象
  • Raise.Monitor.Utils存放项目的工具类
  • MonitorSetup为打包安装目录

Quartz调度项目目录

  • Workbench
  • Raise.Workbench.Utils
  • Raise.Workbench.Service
  • Raise.Workbench.Core
  • Raise.Workbench.Common

Quartz调度服务类库介绍

  • Workbench为服务的启动项目
  • Raise.Workbench.Utils为项目的工具类存放
  • Raise.Workbench.Service根据调度配置项目生成调度服务作业
  • Raise.Workbench.Core核心命名空间,暂时存放接口
  • Raise.Workbench.Common项目公共库

安装教程

  1. 在打包目录下取得Workbench\MonitorSetup\Debug\MonitorSetup.msi进行安装,如 安装界面
  2. 操作下一步,直到安装结束,桌面会生成Workbench图标,64位操作系统默认安装路径C:\Program Files (x86)\MonitorSetup 至此已经安装结束,下面是配置
  3. 图为配置,如图 配置界面
  4. 打开该文件找到配置节ConnectionString,IsProduction,ServiceNames
  • ConnectionString用以配置数据库连接
  • IsProduction指定是否为生成环境,如果为生成环境,则不打印SQL,否则打印SQL到日志logs文件夹下
  • ServiceNames本工具所管理的服务,默认只管理调度服务Workbench
  1. 该工具有如下功能
  • 新增、修改、作废、恢复、启用,停用指定的某项作业,
  • 其他日志查看(可以查看该工具以及调度服务的工作异常情况),
  • 查看日志功能为查看作业调度情况下,接口返回的内容等项,
  • 立即生效,常用于配置结束后,立即生效作业时使用
  • 关闭调度,则会停止所有的作业调度(慎用)

界面

调度服务安装

调度服务安装,在编译得到的最终产物目录Workbench\Workbench\bin\Debug找到Workbench.exe,注意:不能直接点击exe运行,该程序为服务,需要安装Windows 服务保证一直运行中

图

参与贡献

  • Sunrise

参考文献

注意事项

  • Devart是收费项目,可以使用Oracle.ManagedDataAccess无缝替代,本项目已经用Oracle.ManagedDataAccess替代,由于Oracle.ManagedDataAccess本身存在的问题,如果商用,建议购买Devart

联系我

最近刚创建群,群人数较少,后续会升级为集群方案,如果喜欢,请给个star以及Fork我

posted @ 2018-08-10 05:59 hornet_team 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2017-01-09 23:05 hornet_team 阅读(183) 评论(0) 推荐(0) 编辑
摘要: /// /// Redis 帮助类文件 /// public class RedisHelper : IDisposable { /// /// 针对Log4net的实例 /// private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().D... 阅读全文
posted @ 2015-12-29 11:42 hornet_team 阅读(1248) 评论(0) 推荐(0) 编辑
摘要: 1.二进制转换为图片 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); 2.C#中byte[]与string的转换代码 1):var converter = new System.Text.UnicodeEncoding(); byte[... 阅读全文
posted @ 2015-12-18 12:47 hornet_team 阅读(947) 评论(0) 推荐(0) 编辑
摘要: 在WCF的根目录下添加跨域文件 阅读全文
posted @ 2015-11-20 09:04 hornet_team 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 1.只能对 Type.IsGenericParameter 为 True 的类型调用方法 对于此错误,一般常见在虚拟实体,但是要把条件拼接在Expression中,通常是因为该字段在数据库中是可空的,做法就是将此条件在Linq Query之前先过来,不要用来过滤虚拟的实体,用来过滤原生的实体 阅读全文
posted @ 2015-10-27 13:22 hornet_team 阅读(728) 评论(0) 推荐(0) 编辑
摘要: 我们知道Linq to sharepoint 实际最终还是转化成了CALM来对Sharepoint进行访问,那么我们怎样才能知道我们编写的Query语句最终转化成的CALM语句是什么样子呢。 我们可以使用如下方法来达到我们的目的。 1.首先在我们的Sharepoint项目中新建一个名为CAMLDebug的类,如图: CALMDebug.cs代码如下: using System;... 阅读全文
posted @ 2015-10-27 13:10 hornet_team 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 1.添加引用using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common;2.Backup bkpDatabase = new Backup(); // Set the backup type to a database backup bkpDatabase.Action = Backup... 阅读全文
posted @ 2015-09-07 16:36 hornet_team 阅读(469) 评论(1) 推荐(0) 编辑
摘要: 1.下面是一个C#的控制台以代码来说明处理 using System.Data.SqlClient; class Program { static void Main() { string connectionString = GetConnectionString(); using (SqlConnection sourceConnection =... 阅读全文
posted @ 2015-09-02 09:30 hornet_team 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 用WebRequest和WebClient,两种方式,请求一个由http服务发布的应用,结果出现异常。 有三种,1、System.Net.WebException: 服务器提交了协议冲突. Section=ResponseStatusLine 2、System.Net.WebException: 基础连接已经关闭: 连接被意外关闭。3、System.Net.ProtocolViolationExc... 阅读全文
posted @ 2015-08-27 08:36 hornet_team 阅读(1476) 评论(0) 推荐(1) 编辑
点击右上角即可分享
微信分享提示