程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> .net 任務調度平台,.net任務調度

.net 任務調度平台,.net任務調度

編輯:C#入門知識

.net 任務調度平台,.net任務調度


開源地址: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", "[email protected]");
            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後端部分截圖及安裝

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved