開源地址:http://git.oschina.net/chejiangyi/Dyd.BaseService.TaskManager
.net 任務調度平台
用於.net dll,exe的任務的掛載,任務的隔離,調度執行,訪問權限控制,監控,管理,日志,錯誤預警,性能分析等。
1) 平台基於quartz.net進行任務調度功能開發,采用C#代碼編寫, 支持corn表達式和第三方自定義的corn表達式擴展。
2) 架構以插件形式開發,具有良好的功能擴展性,穩定性,簡單性,便於第三方開發人員進一步進行功能擴展。
3) 支持多節點集群,便於集群服務器的資源有效分配,任務的相互隔離。
4) 支持郵件形式的錯誤預警,便於運維及時處理任務異常等。
開源相關群: .net 開源基礎服務 238543768
任務demo
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dyd.BaseService.TaskManager.Demo
{
/// <summary>
/// 任務調度平台 任務插件的寫法demo及說明
/// </summary>
public class DemoTask : XXF.BaseService.TaskManager.BaseDllTask
{
/// <summary>
/// 任務調度平台根據發布的任務時間配置,定時回調運行方法
/// 開發人員的任務插件必須要重載並該方法
/// </summary>
public override void Run()
{
/*
* this.OpenOperator 用於任務調度平台提供給第三方使用的所有api接口封裝
*/
/*獲取當前任務dll安裝目錄*/
this.OpenOperator.GetTaskInstallDirectory();
/*打印一條日志到任務調度平台,因為日志會存到平台數據庫,所以日志要精簡,對任務出錯時有分析價值【注意:不要頻繁打印無用的,非必要的,對分析無價值的日志信息】*/
this.OpenOperator.Log("這裡打印一條日志到任務調度平台");
/*打印一條錯誤到任務調度平台,因為日志會存到平台數據庫,所以日志要精簡,對任務出錯時有分析價值【注意:不要頻繁打印無用的,非必要的,對分析無價值的日志信息】
*後續任務會有增加優先級區分,根據任務的優先級,錯誤的出現頻率等,錯誤日志會定期推送到開發者郵箱和短信*/
this.OpenOperator.Error("這裡打印一條錯誤日志到任務調度平台", new Exception("錯誤msg信息"));
/*從數據庫獲取任務的臨時數據,臨時數據以jason的形式保存在數據庫裡面,便於任務上下文的恢復和信息傳遞【注意:不應用於"頻繁的"存儲"大量的"臨時數據,會操作網絡耗時和數據庫性能差】*/
var databasetempinfo = this.OpenOperator.GetDataBaseTempData<DemoTaskDatabaseTempInfo>();
if (databasetempinfo == null)//若任務第一次運行,可能沒有臨時數據。當然也可以在發布任務的時候配置臨時數據也可。
{
databasetempinfo = new DemoTaskDatabaseTempInfo();
databasetempinfo.LastLogID = 0;
}
/*將任務的臨時數據持久化到數據庫中,臨時數據以json的形式保存在數據庫裡面,便於任務上下文的恢復和信息傳遞【注意:不應用於"頻繁的"存儲"大量的"臨時數據,會操作網絡耗時和數據庫性能差】
若臨時數據用於下一次使用,必須要執行此方法,否則下次無法獲取【注意:執行此方法,當前臨時數據有可能被重置為null,便於內存資源釋放】*/
this.OpenOperator.SaveDataBaseTempData(databasetempinfo);
/*從本地安裝目錄中獲取任務的臨時數據,臨時數據以jason的形式保存在本地,便於任務上下文的恢復和信息傳遞【注意:本地臨時數據一般用於保存"大量的"臨時數據】*/
var localtempinfo = this.OpenOperator.GetLocalTempData<DemoTaskLocalTempInfo>();
if (localtempinfo == null)//若任務第一次運行,可能沒有臨時數據。當然也可以在發布任務的時候上傳臨時數據json至安裝壓縮包中也可。
{
localtempinfo = new DemoTaskLocalTempInfo();
localtempinfo.file = new byte[0];
}
/*將任務的臨時數據持久化到本地安裝目錄中,臨時數據以json的形式保存在本地安裝目錄裡面,便於任務上下文的恢復和信息傳遞【注意:本地臨時數據一般用於保存"大量的"臨時數據】
若臨時數據用於下一次使用,必須要執行此方法,否則下次可能無法獲取【注意:執行此方法,當前臨時數據有可能被重置為null,便於內存資源釋放】*/
this.OpenOperator.SaveLocalTempData(localtempinfo);
{
string msg = "執行業務中...."+ this.AppConfig["sendmailhost"];
Debug.WriteLine(msg);
System.IO.File.AppendAllText(this.OpenOperator.GetTaskInstallDirectory()+"業務.txt", msg);
}
}
/// <summary>
/// 開發人員自測運行入口
/// 需要將項目配置為->控制台應用程序,寫好Program類和Main入口函數
/// </summary>
public override void TestRun()
{
/*測試環境下任務的配置信息需要手工填寫,正式環境下需要配置在任務配置中心裡面*/
this.AppConfig = new XXF.BaseService.TaskManager.SystemRuntime.TaskAppConfigInfo();
this.AppConfig.Add("sendmailhost", "smtp.163.com");
this.AppConfig.Add("sendmailname", "fengyeguigui@163.com");
this.AppConfig.Add("password", "******");
base.TestRun();
}
}
/// <summary>
/// 任務調度平台之臨時數據信息,用於任務上下文的信息傳遞。
/// 將會以json形式保存在任務調度平台數據庫中,便於下一次回調運行時恢復並使用。【注意:不應用於"頻繁的"存儲"大量的"臨時數據,會操作網絡耗時和數據庫性能差】
/// </summary>
public class DemoTaskDatabaseTempInfo
{
public int LastLogID { get; set; }
}
/// <summary>
/// 任務調度平台之臨時數據信息,用於任務上下文的信息傳遞。
/// 將會以json形式保存在任務調度平台本地安裝文件夾中,便於下一次回調運行時恢復並使用。【注意:本地臨時數據一般用於保存"大量的"臨時數據】
/// </summary>
public class DemoTaskLocalTempInfo
{
public byte[] file { get; set; }
}
}
web後端部分截圖及安裝











