Topshelf入门

简介

Topshelf允许我们快速的开发、调试和部署windows服务。

官方网站

使用方法

第一步:安装

Install-Package Topshelf

Install-Package Topshelf.Log4Net

虽然安装Topshelf.Log4Net不是必须的,不过建议安装。

第二步:实现服务逻辑

ServiceRunner.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.IO;

using Topshelf;
using log4net;
using log4net.Config;

namespace WHTR.Demos.Topshelf
{
    public sealed class ServiceRunner : ServiceControl, ServiceSuspend
    {
        private static ILog Logger = LogManager.GetLogger(typeof(Program));

        private Timer timer;

        static ServiceRunner()
        {
            var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
            XmlConfigurator.ConfigureAndWatch(logCfg);
        }

        public bool Start(HostControl hostControl)
        {
            this.timer = new Timer(new TimerCallback(this.PrintMessage), null, 1000, 1000);

            return true;
        }

        public bool Stop(HostControl hostControl)
        {
            throw new NotImplementedException();
        }

        public bool Continue(HostControl hostControl)
        {
            throw new NotImplementedException();
        }

        public bool Pause(HostControl hostControl)
        {
            throw new NotImplementedException();
        }
        private void PrintMessage(object state)
        {
            Logger.Info(DateTime.Now);
        }
    }
}

备注:要实现的接口及方法名意义非常明显,这里就不做过多说明了。

第三步:调用

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Topshelf;
using Topshelf.ServiceConfigurators;

namespace TopshelfDemos
{
    class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>
            {
                //x.UseLog4Net("~/log4net.config");

                x.Service<ServiceRunner>();

                x.SetDescription("TopshelfDemos说明");
                x.SetDisplayName("TopshelfDemos显示名称");
                x.SetServiceName("TopshelfDemos服务名称");

                x.EnablePauseAndContinue();
            });
        }
    }
}

第四步:安装&卸载

  • 安装:TopshelfDemos.exe install
  • 卸载:TopshelfDemos.exe uninstall
  • 安装不同的实例:TopshelfDemos.exe install -instance "xxx" -servicename "xxx" -description "xxx" -displayname "xxx"
  • 卸载不同的实例 TopshelfDemos.exe uninstall -instance "xxx"

备注

以前以为开发Windows服务是多么高大上的东西,没想到这么简单。就两步,引用Topshelf.dll,然后实现接口,完成。

你可能感兴趣的:(top)