日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Topshelf 学习 跨平台

發(fā)布時(shí)間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Topshelf 学习 跨平台 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Topshelf是一個(gè)開源的跨平臺(tái)的宿主服務(wù)框架,支持Windows和Mono,只需要幾行代碼就可以構(gòu)建一個(gè)很方便使用的服務(wù)宿主。

官網(wǎng):http://topshelf-project.com?

GitHub:http://github.com/topshelf/Topshelf

下面就開始來學(xué)習(xí)。

創(chuàng)建項(xiàng)目

1.新建一個(gè)控制臺(tái)程序

2.添加引用

我們直接搜索?Topshelf log4net

?

或者Nuget控制臺(tái):Install-Package?Topshelf.Log4Net

正常情況下 直接安裝Topshelf 一個(gè)就可以了。Log4Net只是為了更好的方便記錄日志。

?

3.創(chuàng)建服務(wù)

先創(chuàng)建一個(gè)類,繼承?ServiceControl 然后實(shí)現(xiàn)。

public class SampleService : ServiceControl {LogWriter _log;Timer _timer;public SampleService() {_log = HostLogger.Get<SampleService>();_timer = new Timer(1000) { AutoReset = true };_timer.Elapsed += (sender, eventArgs) => _log.Info(DateTime.Now);}public bool Start(HostControl hostControl){ _log.Info("服務(wù)啟動(dòng)");_timer.Start();return true;}public bool Stop(HostControl hostControl){_log.Info("服務(wù)停止");_timer.Stop();return true;}}

LogWriter 需要using Topshelf.Logging;

?

4.調(diào)用

然后再M(fèi)ain中調(diào)用

static void Main(string[] args){HostFactory.Run(x =>{x.UseLog4Net("log4net.config");x.Service<SampleService>();x.SetDescription("TopshelfSample說明");x.SetDisplayName("TopshelfSample顯示名稱");x.SetServiceName("TopshelfSample服務(wù)名稱");});}

這樣一個(gè)簡(jiǎn)單的服務(wù)就完成了。

log4net.config 如下:

<?xml version="1.0" encoding="utf-8" ?> <log4net><appender name="RollingFile"type="log4net.Appender.FileAppender"><file value="service.log" /><appendToFile value="true" /><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" /></layout></appender><appender name="ColoredConsoleAppender"type="log4net.Appender.ColoredConsoleAppender"><mapping><level value="ERROR" /><foreColor value="Red, HighIntensity" /></mapping><mapping><level value="INFO" /><foreColor value="White" /></mapping><mapping><level value="DEBUG" /><foreColor value="Cyan" /></mapping><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%message%newline" /></layout></appender><!-- Set root logger level to DEBUG and its only appender to Console --><root><level value="DEBUG" /><appender-ref ref="RollingFile" /><appender-ref ref="ColoredConsoleAppender" /></root> </log4net>

安裝服務(wù)

服務(wù)編寫好以后,我們可以直接安裝,安裝的命令也很簡(jiǎn)單,直接 TopshelfSample.exe install

已經(jīng)成功安裝。

啟動(dòng):TopshelfSample.exe start

停止:TopshelfSample.exe stop

卸載:TopshelfSample.exe uninstall

更多命令可以TopshelfSample.exe help

跨平臺(tái)

Topshelf是一個(gè)開源的跨平臺(tái)的宿主服務(wù)框架,不過本身只支持mono 命令行執(zhí)行,不能使用Topshelf的命令行Start,Stop控制服務(wù)。

log4net?ColoredConsoleAppender 不支持linux ,所以去掉ColoredConsoleAppender ,保留RollingFile。

log4net.config

<?xml version="1.0" encoding="utf-8" ?> <log4net><appender name="RollingFile"type="log4net.Appender.FileAppender"><file value="service.log" /><appendToFile value="true" /><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" /></layout></appender><!-- Set root logger level to DEBUG and its only appender to Console --><root><level value="DEBUG" /><appender-ref ref="RollingFile" /></root> </log4net>

?

下面我們就來看看一下運(yùn)行在linux下。

首先大家要安裝好 mono

可以參考:http://www.cnblogs.com/linezero/p/4774850.html

測(cè)試系統(tǒng)版本:centos 6.4 ?mono 3.10.0

?

將程序上傳到linux 系統(tǒng)執(zhí)行。?

mono TopshelfSample.exe

?查看日志,成功執(zhí)行

參考文檔:

https://topshelf.readthedocs.org/en/latest/configuration/quickstart.html

?

如果你覺得本文對(duì)你有幫助,請(qǐng)點(diǎn)擊“推薦”,謝謝。

總結(jié)

以上是生活随笔為你收集整理的Topshelf 学习 跨平台的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。