使用TopSelf建立自宿主的Windows服務程式

來源:互聯網
上載者:User

標籤:

在傳統的Windows服務開發過程中,需要添加一個服務安裝程式,裡面寫安裝,啟動和停止服務等邏輯。現在,使用TopSelf可以簡化這個過程。

首先,繼承 ServiceControl 寫一個應用服務類:

 internal class AppService : ServiceControl    {        ILog log = LogManager.GetLogger(typeof(AppService));              public void Initialize()        {            log.Info("Initialize");            Console.WriteLine("Engine starting....");            EngineContext.Initialize(false);                     Console.WriteLine("Engine started");        }        public bool Start(HostControl hostControl)        {            Console.WriteLine("Hosts starting....");            ServiceHostHelper.OpenWcfService();                   Console.WriteLine("Hosts started");            return true;        }        public bool Stop(HostControl hostControl)        {            ServiceHostHelper.CloseWcfService();            return true;        }    }

然後,在主程式裡面,寫如下代碼:

static void Main(string[] args)        {            try            {                HostFactory.Run(x =>                {                    x.RunAsLocalSystem();                    x.StartAutomatically();                    //x.StartManually();                    var defaultName = GetDefaultServiceName();                    var config = DXNConfig.Current.AppServer;                    x.SetServiceName("我的服務1");                    x.SetDisplayName("我的服務1");                    x.SetDescription("我的服務1描述");                    x.Service(factory =>                    {                        var service = new AppService();                        service.Initialize();                        return service;                    });                });            }            catch (Exception ex)            {                try                {                    LogManager.GetLogger(typeof(Program)).Fatal("AppServer launch error", ex);                }                catch                {                 }                //throw;            }        }}


這些服務名稱性資訊是可以修改的。
好了,現在編譯,我們的程式就可以當服務使用了。

之後,就可以用命令列來安裝服務:

@echo off%~d0cd %~dp0cd..rem ApplicationServer.exe install -servicename "ApplicationServer" -displayname "ApplicationServer" -description "XX業務管理系統"ApplicationServer.exe install@echo 啟動服務...ApplicationServer.exe startecho 啟動結束


啟動服務:

sc start "ApplicationServer"

停止服務:

sc stop "ApplicationServer"

卸載服務:

ApplicationServer.exe uninstall

運行第一個啟動服務的批次檔,將輸出下面的內容:

Configuration Result:[Success] Name DEV_DXN_ApplicationServer[Success] DisplayName ApplicationServer[Success] Description XXX業務管理系統[Success] ServiceName ApplicationServerTopshelf v3.0.105.0, .NET Framework v4.0.30319.34014正在運行交易處理安裝。正在開始安裝的“安裝”階段。Installing DXN ApplicationServer service正在安裝服務 DXN_ApplicationServer...已成功安裝服務DXN_ApplicationServer。正在日誌 Application 中建立 EventLog 源 ApplicationServer...“安裝”階段已成功完成,正在開始“提交”階段。“提交”階段已成功完成。已完成交易處理安裝。啟動服務...Configuration Result:[Success] Name DXN_ApplicationServer[Success] DisplayName ApplicationServer[Success] Description XX管理系統[Success] ServiceName ApplicationServerTopshelf v3.0.105.0, .NET Framework v4.0.30319.34014The ApplicationServer service is not installed.

過程全部完成。

 

使用TopSelf建立自宿主的Windows服務程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.