2016年1月27日 星期三

TopShelf

開發Windows Service的時後,為了開發方便,之前都用一些小技巧切換在本機的Console模式和伺服器的Service模式,但在日後維護的時後或是偵錯的時後,總是不太方便,最近用了一個好用的套件叫TopShelf,是一個用來開發Windows Service的框架,實在太好用了,所以記錄一下筆記

首先新增一個Console專案

透過NuGet安裝TopShelf套件

簡單地寫一個類別,包含Start和Stop兩個函式
using System;

namespace ConsoleApplication1
{
    class MyService
    {
        public void Start()
        {
            Console.WriteLine("MyService Start");
        }

        public void Stop()
        {
            Console.WriteLine("My Service Stop");
        }
    }
}


回到應用程式進入點開始配置服務
using Topshelf;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Topshelf.HostFactory.Run(x=>
            {
                x.Service<MyService>(s =>
                {
                    s.ConstructUsing(() => new MyService());
                    s.WhenStarted(svc => svc.Start());
                    s.WhenStopped(svc => svc.Stop());
                });

                x.RunAsLocalSystem();
                x.StartAutomatically();
                x.SetServiceName("MyService");
                x.SetDisplayName("MyService Display Name");
                x.SetDescription("MyService Description");
            });
        }
    }
}


本機執行的結果

安裝服務只要在執行檔後面加上install參數就行了

服務就安裝好了

解除安裝只要在執行檔後面加上uninstall參數就行了

更詳細的功能可以參考官網的文件
TopShlep官網