Une brève introduction au framework de service de synchronisation en arrière-plan .NET

黄舟
Libérer: 2017-07-27 16:17:36
original
3348 Les gens l'ont consulté

Tant que les développeurs ayant une certaine expérience ont été exposés aux services d'arrière-plan, ils sont indissociables de la création de services, du traitement logique de planification, de l'écriture de logique métier et d'autres liens. Souvent, lorsque nous créons un nouveau projet de service en arrière-plan, nous copions le code précédent, écrivons des threads et d'autres méthodes pour le terminer, puis nous occupons de l'installation du service. La plupart du temps est perdu sur ces tâches répétitives.
Ce qui est fourni ici est un cadre de traitement de service en arrière-plan simple. Le cadre de traitement de service en arrière-plan simple prend en charge (l'exécution à des intervalles spécifiés ; l'exécution à des heures spécifiées chaque jour ; l'exécution une fois à des heures spécifiées ; les heures de début et de fin spécifiées chaque jour et comme exécution à intervalle spécifié), lors du développement d'une nouvelle tâche de service planifiée, il vous suffit d'implémenter la méthode de classe abstraite, d'ajouter la configuration de la tâche et d'exécuter le script d'installation pour terminer le développement d'un service.

Chemin du code du framework : Code du framework


Le framework prend en charge la configuration des types d'exécution pour contrôler la logique d'exécution des tâches
Exécution à intervalles spécifiés
Chaque jour Exécuter une fois par jour à une heure spécifiée
Exécuter une fois par jour à une heure spécifiée
Spécifiez l'heure de début et de fin chaque jour et exécutez à l'intervalle spécifié

Ce qui suit est une tâche qui exécute régulièrement une procédure stockée.

Hériter de la classe de base et écrire le code de logique métier


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));
            }
        }
    }
}
Copier après la connexion

Configurer le nom du service

Configurez chaque intervalle d'exécution de 60 secondes


 [
  { //循环执行任务 每次执行间隔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参数 可空  }
]
Copier après la connexion

Une fois l'écriture terminée, compilez et exécutez : Install.bat pour voir le service correspondant dans le gestionnaire de services.

Chemin du code framework : Code framework

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal