一个简单的插件式后台任务管理程序

先说一下背景:某项目需要后台定时进行特殊处理,将处理结果返回到前端。由于涉及到内外网交互、GIS空间分析等操作,而且项目属于省级类型,最终用户会很多,对于后台任务的稳定性要求较高,同时需要在内外网分别部署以完成交互工作。

问题:

(1)程序很简单,一个窗体、一个按钮,用户交互性不好;

(2)多个任务由多个独立的程序承担,开启的应用程序多,维护性不好。

正文:

其实一开始我只是想检查一下代码解决一下容易出错的问题,不料打开解决方案后,对于代码的结构、规范感觉一脸懵逼。因为处理数据源不同,大段的重复代码;大量被吃掉的异常;频繁的条件结果……。

一个10多年的老程序员无法容忍这种情况,于是开始改造之路,花了2天时间

把功能逻辑进行了修改,同时提炼了一个插件式后台任务管理程序,并规范了后台任务的编写规范。

程序特点:

1.插件式

定义了task插件文件,用户只需要编写dll,并编辑tsk文件即可注册到管理程序;

2.统一的日志管理

实现了简单的日志管理,每个任务插件的日志独立存储,便于用户排查问题。

3.统一的编码规范

自定义Task时,只需要实现DoCustomWork方法,在该方法中完成实际逻辑。

4.定义了PreLoaded类型的任务,PreLoaded任务拥有最优先运行权限,且只执行1次,用于完成初始化操作,如ArcEngine许可初始化。只有PreLoaded任务执行完毕后,才后执行普通任务。

5.可以实时修改任务的配置,如:是否自动运行、奔溃后是否自动重启、重启次数、任务运行间隔时间等。

 

posted @ 2017-04-20 18:12  伸手不见五趾  阅读(899)  评论(0编辑  收藏  举报