文章出處

使用Topshelf 5步創建Windows 服務 這篇文章大家可以了解到使用Topshelf可以很好的支持Windows服務的開發,但是它和Mono不兼容,Github上有一個擴展https://github.com/pruiz/Topshelf.Linux 可以很好兼容Linux/Mono,本文介紹使用方法:

1、在項目中添加Topshelf.Linux, 通過Nuget 很方便的添加引用:

image

2、在代碼中加入下面一行代碼UseLinuxIfAvailable()

  class Program
    {
        static ILog _log = LogManager.GetLogger(typeof(Program));

        static void Main(string[] args)
        {
            System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
            XmlConfigurator.ConfigureAndWatch(
                new FileInfo("log4net.config"));

            var host = HostFactory.New(x =>
            {
                x.Service<SampleService>(s =>
                {
                    s.ConstructUsing(() => new SampleService());
                    s.WhenStarted(v => v.Start());
                    s.WhenStopped(v => v.Stop());

                });
                x.UseLinuxIfAvailable(); 
                x.RunAsLocalSystem();
                x.UseLog4Net();
                x.SetDescription("SampleService Description");
                x.SetDisplayName("SampleService");
                x.SetServiceName("SampleService");
            });
            host.Run();
        }
       這樣你的基于Topshelf Windows服務就完成了兼容Mono的改造工作。但是要注意的是在Mono下支持命令行運行,不能使用Topshelf的命令行Start,Stop控制服務等,這對于Linux環境來說足夠了,可以通過rc-scripts來完成這些工作。

文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()