Topshelf 学习 跨平台
Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。
官网:http://topshelf-project.com
GitHub:http://github.com/topshelf/Topshelf
下面就开始来学习。
创建项目
1.新建一个控制台程序
2.添加引用
我们直接搜索 Topshelf log4net
或者Nuget控制台:Install-Package Topshelf.Log4Net
正常情况下 直接安装Topshelf 一个就可以了。Log4Net只是为了更好的方便记录日志。
3.创建服务
先创建一个类,继承 ServiceControl 然后实现。
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("服务启动");_timer.Start();return true;}public bool Stop(HostControl hostControl){_log.Info("服务停止");_timer.Stop();return true;}}
LogWriter 需要using Topshelf.Logging;
4.调用
然后再Main中调用
static void Main(string[] args){HostFactory.Run(x =>{x.UseLog4Net("log4net.config");x.Service<SampleService>();x.SetDescription("TopshelfSample说明");x.SetDisplayName("TopshelfSample显示名称");x.SetServiceName("TopshelfSample服务名称");});}
这样一个简单的服务就完成了。
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>
安装服务
服务编写好以后,我们可以直接安装,安装的命令也很简单,直接 TopshelfSample.exe install
已经成功安装。
启动:TopshelfSample.exe start
停止:TopshelfSample.exe stop
卸载:TopshelfSample.exe uninstall
更多命令可以TopshelfSample.exe help
跨平台
Topshelf是一个开源的跨平台的宿主服务框架,不过本身只支持mono 命令行执行,不能使用Topshelf的命令行Start,Stop控制服务。
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>
下面我们就来看看一下运行在linux下。
首先大家要安装好 mono
可以参考:http://www.cnblogs.com/linezero/p/4774850.html
测试系统版本:centos 6.4 mono 3.10.0
将程序上传到linux 系统执行。
mono TopshelfSample.exe
查看日志,成功执行
参考文档:
https://topshelf.readthedocs.org/en/latest/configuration/quickstart.html
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
Topshelf 学习 跨平台相关推荐
- 学习跨平台移动应用开发必须理解的一些概念
跨平台移动应用开发概念 移动应用开发分类 Native app Web app Hybrid app 三者的区别 关于native.js的理解 典型跨平台移动APP开发框架 H5与H5+ H5 app ...
- 国内 Mono 相关文章汇总
一则新闻<软件服务提供商Xamarin融资1200万美元>,更详细的内容可以看Xamarin的官方博客Xamarin raises $12M to help you make better ...
- 2021年最新版Web前端学习路线图-前端小白入门必读-推荐
2021年最新版Web前端学习路线图-前端小白入门必读-推荐 Hello,大家好,相信很多学习前端的小伙伴,会有很多的疑惑: 我要学习那些技术? 我要到哪里去学习这些技术呢? 学习这些技术的目的对就业 ...
- 进军IT与安全行业:推荐学习路线图
进军IT与安全行业:推荐学习路线图--转载于其它论坛博客 IT是一个生机勃勃的行业,不少年轻人选择IT作为自己的职业规划与选项,希望能够在IT行业里挖掘自己的潜力,奔一个好的前程.但很多朋 ...
- 视觉SLAM知识库+学习资源+相关企业总结
视觉SLAM的知识资源以及相关企业总结 先在这儿记录一下,SLAM涉及的太多了,现在接触的只是冰山一角. 声名:我只是微信公众号计算机视觉life的搬运工. 一.SLAM知识库 1.SLAM框架/算法 ...
- 5G时代很火的音视频高级开发学习路线及知识点总结
我们先假设某人在音视频方面是零基础,也没学过任何数字信号处理相关知识,数学基础基本是高中水准,但是熟悉 C/C++ 开发,至少熟悉某一个平台下的编译调试IDE. 着重研究两个开源项目 ffmpeg 和 ...
- HTML5+app开发学习之快速入门篇
HTML5+app开发学习之快速入门篇 5+app开发概念理解相关 开发环境与支持 快速入门实战 5+app开发概念理解相关 见博文:学习跨平台移动应用开发必须理解的一些概念 开发环境与支持 开发环境 ...
- IT安全行业学习路线图
进军IT与安全行业:推荐学习路线图--转载于其它论坛博客 IT是一个生机勃勃的行业,不少年轻人选择IT作为自己的职业规划与选项,希望能够在IT行业里挖掘自己的潜力,奔一个好的前程.但很多朋友发现,IT ...
- android屏幕适配的五种方式,价值2000元的学习资源泄露,附答案
开头 作为一个40的人,能有面试机会是格外的珍惜,也分外的诚恳.没什么豪言壮语,雄心大志.没有狼性,社会把中年人打磨成了听话的舔狗. 感谢马爸爸旗下公司,给了我为数不多机会中一个,而且还是个相当好的位 ...
最新文章
- Boost:时间副本的测试程序
- 通过setTimeout来取消因大量计算造成的网页卡顿
- 因果关系固定搭配知识库项目CausalCollocation
- 微信小程序种利用轮播图实现tab栏切换
- hibernate 基础方法(二)【相关配置详解】
- 浅谈iOS中的蓝牙技术(二) CoreBluetooth
- pom文件显示删除线
- 【Dos默认路径设置】
- 关于多元正态分布的条件概率密度
- java 中关于字节数的总结_javaweb实习报告
- 明清时期江右商的宗族教育——江西流坑村的历史人类学考察
- 2020 乐山师范学院新生程序设计大赛题解
- 如何把地址导航生成二维码?
- java设计扑克牌比大小_2019-08-09Day10 单例设计模式,扑克牌比大小游戏(Java)
- 高通开发系列 - 总目录
- SuperSlide-v2.1.1
- 记录:win10 cmd切换目录 切换到D盘
- 甲方乙方——如何协调设计师与客户之间的矛盾
- 6.获取环球时报关键词新闻--动态网页Ajax
- 知乎热议:为什么华为天才计划博士刚毕业200年薪远超科研大牛?