Topshelf 学习 跨平台
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: http接口测试工具——RESTClie
- 下一篇: 2亿QQ用户大调度背后的架构设计和高效运