Heim >Backend-Entwicklung >C#.Net-Tutorial >Eine kurze Einführung in das .NET-Hintergrund-Timing-Service-Framework

Eine kurze Einführung in das .NET-Hintergrund-Timing-Service-Framework

黄舟
黄舟Original
2017-07-27 16:17:363392Durchsuche

Solange Entwickler mit einer bestimmten Erfahrung mit Hintergrunddiensten in Kontakt gekommen sind, sind sie untrennbar mit der Diensterstellung, der Planung der Logikverarbeitung, dem Schreiben von Geschäftslogik und anderen Verknüpfungen verbunden. Wenn wir ein neues Hintergrunddienstprojekt erstellen, kopieren wir häufig den vorherigen Code, schreiben einige Threads und andere Methoden, um ihn zu vervollständigen, und kümmern uns dann um die Installation des Dienstes. Die meiste Zeit wird mit diesen sich wiederholenden Aufgaben verschwendet.
Was hier bereitgestellt wird, ist ein einfaches Hintergrunddienstverarbeitungsframework. Das einfache Hintergrunddienstverarbeitungsframework unterstützt (Ausführung in bestimmten Intervallen; Ausführung zu bestimmten Zeiten jeden Tag; Ausführung einmal zu bestimmten Zeiten; festgelegte Start- und Endzeiten jeden Tag und so). Wenn Sie eine neue geplante Dienstaufgabe entwickeln, müssen Sie nur die Methode der abstrakten Klasse implementieren, die Aufgabenkonfiguration hinzufügen und das Installationsskript ausführen, um die Entwicklung eines Dienstes abzuschließen.

Framework-Codepfad: Framework-Code


Das Framework unterstützt die Konfiguration von Ausführungstypen, um die Ausführungslogik von Aufgaben zu steuern
Ausführung in angegebenen Intervallen
Jeden Tag Einmal täglich zu einer bestimmten Zeit ausführen
Einmal täglich zu einer bestimmten Zeit ausführen
Jeden Tag die Start- und Endzeit angeben und im angegebenen Intervall ausführen

Das Folgende ist eine Aufgabe, die regelmäßig eine gespeicherte Prozedur ausführt.

Erben Sie die Basisklasse und schreiben Sie Geschäftslogikcode


using DataAccessHelper.SQLHelper;using Services.Common;using System;namespace Services.Tasks
{    public class CallProcTask : ServiceBase
    {        protected override void Exec()
        {            try
            {                if (_isStart)
                {                    if (!string.IsNullOrWhiteSpace(Config.Param))
                    {
                        LogFactory.GetLogger().Info(string.Format("开始执行存储过程 {0}", Config.Param));
                        SQLHelperFactory.Instance.ExecuteNonQuery(Config.Param, null);
                        LogFactory.GetLogger().Info(string.Format("执行存储过程 {0} 完成", Config.Param));
                    }
                }
            }            catch (Exception ex)
            {
                LogFactory.GetLogger().Error(string.Format("执行存储过程 {0} 异常:{1}", Config.Param, ex));
            }
        }
    }
}

Konfigurieren Sie den Dienstnamen

Konfigurieren Sie jedes Ausführungsintervall von 60 Sekunden


 [
  { //循环执行任务 每次执行间隔60秒
    "ServiceName": "CallProcTask-proc_test任务",//服务名称 非空
    "Assembly": "Services.exe",//程序集 非空
    "Methods": "Services.Tasks.CallProcTask",//执行类名  对应业务的类名 非空
    "S_Interval": 60,//间隔时间 单位秒
    "ExecType": 0,//执行类型 ( 0:按指定间隔时间执行 1:每天指定时间执行 每天一次 2:指定时间执行一次 3.每天指定开始和结束时间并且按照指定间隔时间执行) 可空默认0
    "Param": "proc_test"//自定义参数 在本案例中为SQL参数 可空  }
]

Nachdem der Schreibvorgang abgeschlossen ist, kompilieren Sie Folgendes und führen Sie Folgendes aus: Install.bat, um den entsprechenden Dienst im Dienstmanager anzuzeigen.

Framework-Codepfad: Framework-Code

Das obige ist der detaillierte Inhalt vonEine kurze Einführung in das .NET-Hintergrund-Timing-Service-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn