zoukankan      html  css  js  c++  java
  • Topshelf:一款非常好用的 Windows 服务开发框架

    背景

    多数系统都会涉及到“后台服务”的开发,一般是为了调度一些自动执行的任务或从队列中消费一些消息,开发 windows service 有一点不爽的是:调试麻烦,当然你还需要知道 windows service 相关的一些开发知识(也不难),本文介绍一个框架,让你让 console application 封装为 windows service,这样你就非常方便的开发和调试 windows service。

    TopShelf

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Timers;
     7 
     8 using Topshelf;
     9 using Topshelf.Builders;
    10 using Topshelf.Configurators;
    11 using Topshelf.HostConfigurators;
    12 
    13 namespace TopshelfStudy
    14 {
    15     public sealed class TimeReporter
    16     {
    17         private readonly Timer _timer;
    18         public TimeReporter()
    19         {
    20             _timer = new Timer(1000) { AutoReset = true };
    21             _timer.Elapsed += (sender, eventArgs) => Console.WriteLine("当前时间:{0}", DateTime.Now);
    22         }
    23         public void Start() { _timer.Start(); }
    24         public void Stop() { _timer.Stop(); }
    25     }
    26 
    27     class Program
    28     {
    29         static void Main(string[] args)
    30         {
    31             HostFactory.Run(x =>
    32             {
    33                 x.Service<TimeReporter>(s =>
    34                 {
    35                     s.ConstructUsing(settings => new TimeReporter());
    36                     s.WhenStarted(tr => tr.Start());
    37                     s.WhenStopped(tr => tr.Stop());
    38                 });
    39 
    40                 x.RunAsLocalSystem();
    41 
    42                 x.SetDescription("定时报告时间");
    43                 x.SetDisplayName("时间报告器");
    44                 x.SetServiceName("TimeReporter");
    45             });
    46         }
    47     }
    48 }

    备注

    TopShelf 提高的 API 非常简单,也提高了和 Log4Net 的集成,结合 Quartz(后面介绍),可以实现任务调度服务。

  • 相关阅读:
    [DDCTF 2019]homebrew event loop
    [极客大挑战 2019]FinalSQL
    $[HAOI2008]$硬币购物
    $2018/8/19 = Day5$学习笔记 + 杂题整理
    $2018/8/16 = Day2$学习笔记$+$杂题整理
    [NOIp2009] $Hankson$の趣味题
    2018清北学堂夏日培训游记
    2.数组的声明和创建
    1.什么是数组?
    15.递归
  • 原文地址:https://www.cnblogs.com/happyframework/p/3601995.html
Copyright © 2011-2022 走看看