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 学习 跨平台相关推荐

  1. 学习跨平台移动应用开发必须理解的一些概念

    跨平台移动应用开发概念 移动应用开发分类 Native app Web app Hybrid app 三者的区别 关于native.js的理解 典型跨平台移动APP开发框架 H5与H5+ H5 app ...

  2. 国内 Mono 相关文章汇总

    一则新闻<软件服务提供商Xamarin融资1200万美元>,更详细的内容可以看Xamarin的官方博客Xamarin raises $12M to help you make better ...

  3. 2021年最新版Web前端学习路线图-前端小白入门必读-推荐

    2021年最新版Web前端学习路线图-前端小白入门必读-推荐 Hello,大家好,相信很多学习前端的小伙伴,会有很多的疑惑: 我要学习那些技术? 我要到哪里去学习这些技术呢? 学习这些技术的目的对就业 ...

  4. 进军IT与安全行业:推荐学习路线图

    进军IT与安全行业:推荐学习路线图--转载于其它论坛博客       IT是一个生机勃勃的行业,不少年轻人选择IT作为自己的职业规划与选项,希望能够在IT行业里挖掘自己的潜力,奔一个好的前程.但很多朋 ...

  5. 视觉SLAM知识库+学习资源+相关企业总结

    视觉SLAM的知识资源以及相关企业总结 先在这儿记录一下,SLAM涉及的太多了,现在接触的只是冰山一角. 声名:我只是微信公众号计算机视觉life的搬运工. 一.SLAM知识库 1.SLAM框架/算法 ...

  6. 5G时代很火的音视频高级开发学习路线及知识点总结

    我们先假设某人在音视频方面是零基础,也没学过任何数字信号处理相关知识,数学基础基本是高中水准,但是熟悉 C/C++ 开发,至少熟悉某一个平台下的编译调试IDE. 着重研究两个开源项目 ffmpeg 和 ...

  7. HTML5+app开发学习之快速入门篇

    HTML5+app开发学习之快速入门篇 5+app开发概念理解相关 开发环境与支持 快速入门实战 5+app开发概念理解相关 见博文:学习跨平台移动应用开发必须理解的一些概念 开发环境与支持 开发环境 ...

  8. IT安全行业学习路线图

    进军IT与安全行业:推荐学习路线图--转载于其它论坛博客 IT是一个生机勃勃的行业,不少年轻人选择IT作为自己的职业规划与选项,希望能够在IT行业里挖掘自己的潜力,奔一个好的前程.但很多朋友发现,IT ...

  9. android屏幕适配的五种方式,价值2000元的学习资源泄露,附答案

    开头 作为一个40的人,能有面试机会是格外的珍惜,也分外的诚恳.没什么豪言壮语,雄心大志.没有狼性,社会把中年人打磨成了听话的舔狗. 感谢马爸爸旗下公司,给了我为数不多机会中一个,而且还是个相当好的位 ...

最新文章

  1. Boost:时间副本的测试程序
  2. 通过setTimeout来取消因大量计算造成的网页卡顿
  3. 因果关系固定搭配知识库项目CausalCollocation
  4. 微信小程序种利用轮播图实现tab栏切换
  5. hibernate 基础方法(二)【相关配置详解】
  6. 浅谈iOS中的蓝牙技术(二) CoreBluetooth
  7. pom文件显示删除线
  8. 【Dos默认路径设置】
  9. 关于多元正态分布的条件概率密度
  10. java 中关于字节数的总结_javaweb实习报告
  11. 明清时期江右商的宗族教育——江西流坑村的历史人类学考察
  12. 2020 乐山师范学院新生程序设计大赛题解
  13. 如何把地址导航生成二维码?
  14. java设计扑克牌比大小_2019-08-09Day10 单例设计模式,扑克牌比大小游戏(Java)
  15. 高通开发系列 - 总目录
  16. SuperSlide-v2.1.1
  17. 记录:win10 cmd切换目录 切换到D盘
  18. 甲方乙方——如何协调设计师与客户之间的矛盾
  19. 6.获取环球时报关键词新闻--动态网页Ajax
  20. 知乎热议:为什么华为天才计划博士刚毕业200年薪远超科研大牛?

热门文章

  1. 数据库-数据类型及主键外键
  2. s插件——SlimScroll滚动美化插件
  3. Android读取短信和联系人
  4. Tomcat启动过程中找不到JAVA_HOME解决方法
  5. ASP.NET MVC 自定义路由中几个需要注意的小细节
  6. (转)最好的HTML 5编码教程和参考手册分享
  7. 编写优秀缺陷报告(Bug report)的艺术
  8. EVC实现拷贝文件夹下所有文件
  9. B端产品经理思考-软硬产品设计
  10. 微信红包要哭了...给抢红包设计一个新交互