Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Topshelf 5步创建Windows 服务

使用Topshelf 5步创建Windows 服务

作者头像
张善友
发布于 2018-01-19 08:43:54
发布于 2018-01-19 08:43:54
1.3K0
举报
文章被收录于专栏:张善友的专栏张善友的专栏

使用Topshelf创建Windows 服务简要的介绍了创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务。Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。

1、Topshelf的代码托管http://topshelf-project.com/,可以在这里下载到最新的代码。

2、使用Visual Studio创建一个控制台应用程序引用程序集TopShelf.dll 合log4net.dll 。

3、创建一个简单的服务类,里面包含两个方法Start和Stop,这个服务只是演示代码,所以我们每隔5秒输出一个日志。

代码语言:js
AI代码解释
复制
using System;
using System.Timers;
using log4net;

namespace SampleWindowsService
{
public class SampleService
{
private Timer _timer = null;
readonly ILog _log = LogManager.GetLogger(typeof(SampleService));

public SampleService()
{
double interval = 5000;
_timer = new Timer(interval);
_timer.Elapsed += new ElapsedEventHandler(OnTick);
}

protected virtual void OnTick(object sender, ElapsedEventArgs e)
{
_log.Debug("Tick:" + DateTime.Now.ToLongTimeString());
}

public void Start()
{
_log.Info("SampleService is Started");

_timer.AutoReset = true;
_timer.Enabled = true;
_timer.Start();
}

public void Stop()
{
_log.Info("SampleService is Stopped");

_timer.AutoReset = false;
_timer.Enabled = false;
}
}
}

4、在Main方法中使用Topshelf宿主我们的服务,主要是告诉Topshelf如何设置我们的服务的配置和启动和停止的时候的方法调用。

代码语言:js
AI代码解释
复制
using System.IO;
using log4net.Config;
using Topshelf;

namespace SampleWindowsService
{
class Program
{
static void Main(string[] args)
{
XmlConfigurator.ConfigureAndWatch(
new FileInfo(".\\log4net.config"));

var host = HostFactory.New(x =>
{
x.EnableDashboard();
x.Service<SampleService>(s =>
{
s.SetServiceName("SampleService");
s.ConstructUsing(name => new SampleService());
s.WhenStarted(tc =>
{
XmlConfigurator.ConfigureAndWatch(
new FileInfo(".\\log4net.config"));
tc.Start();
});
s.WhenStopped(tc => tc.Stop());
});

x.RunAsLocalSystem();
x.SetDescription("SampleService Description");
x.SetDisplayName("SampleService");
x.SetServiceName("SampleService");
});

host.Run();
}
}
}

4、配置Log4net和运行我们的服务,服务可以当作控制台来运行,这在开发的时候是非常方便的。服务的安装很方便

SampleWindowsService.exe install

安装成功后,可以通过服务控制台启动,或者也可以通过一下命令运行

SampleWindowsService.exe start

服务的卸载方法也非常简单了

SampleWindowsService.exe uninstall

相关文章:

使用Topshelf创建Windows 服务

A WCF calculator in a windows service with TopShelf

WCF service with Topshelf using as a host, log4net as logging tool, and HTML as output

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011-05-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Topshelf部署Windows服务
TopShelf支持使用Log4net,使用Nuget安装Topshelf.Log4Net:
yaphetsfang
2020/07/30
8110
Topshelf 支持Mono 扩展Topshelf.Linux
使用Topshelf 5步创建Windows 服务 这篇文章大家可以了解到使用Topshelf可以很好的支持Windows服务的开发,但是它和Mono不兼容,Github上有一个扩展https://g
张善友
2018/01/29
2K0
定时从列表中爬今日通知信息,打包成windows服务
每天8点爬取今日发布的新闻和通知公告,将爬取后的信息保存到Excel文件中,将程序发布成windows服务,开机即可自动启动。
happlyfox
2018/10/31
7070
Log4Net使用心得
winform程序使用Log4net   1.引用dll   2.添加log4net.config,设置“始终复制”   4.assemblyinfo.cs中添加       [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]   5.代码中,使用下面语句来记录信息,logger就是当前的类    log4net.LogManager.GetLogger(System.Reflecti
用户1075292
2018/01/23
7730
C#/.NET基于Topshelf创建Windows服务程序及服务的安装和卸载(极速,简洁)
对于使用Windows操作系统的人来说,Windows Service(Windows服务)应该不会陌生。在Windows操作系统中,我们可以在"运行"窗口中运行service.msc:
Rector
2020/06/19
2.1K0
使用Topshelf创建Windows 服务
Winndows Service 是一种可随 Windows 操作系统启动而启动的,在后台运行的,通常不和用户产生交互的程序。它无法通过双击来运行,类似于 Unix 守护进程(daemon processes),当用户注销时它也不会停止。 Windows 服务由三部分组成: 一个服务可执行文件; 一个服务控制程序(SCP); 服务控制管理器(SCM),负责在 HKLM"SYSTEM"CurrentControlSet"Services 下创建服务键值。用户可通过 SCP 控制服务的启动、停止、暂停等,SCP
张善友
2018/01/19
1.1K0
.NET 使用 quartz+topshelf 实现定时任务
2、配置新项目,自行修改项目名称、位置和框架(建议使用.NET Framework4.5以上版本)
郑子铭
2023/09/28
4320
.NET 使用 quartz+topshelf 实现定时任务
【5】基于Log4Net的日志系统
阅读目录 日志系统应具备的特性 Log4Net 配置文件:log4net.config 初始化 输出信息 对Log4Net的封装 log4net.config复杂配置 不管是Web应用程序还是WinForm应用程序,Visual Studio所带的调试功能都是足够强大,足以应付开发中的各种调试需求。但是,对于已经发布的应用,要记录错误、记载运行中的各种状态信息,就需要依靠日志系统了。 日志系统应具备的特性 一个好的日志系统,应该具备以下的特性: 1、运行稳定。因为日志的作用就是要在系统出现各种
用户1075292
2018/01/23
1.6K0
【5】基于Log4Net的日志系统
使用Topshelf组件构建简单的Windows服务
彭泽0902
2018/01/04
1.2K0
使用Topshelf组件构建简单的Windows服务
Quartz.NET的使用(附源码)
  虽然Quartz.NET被园子里的大神们写烂了,自己还是整理了一篇,结尾会附上源码地址。
陈珙
2018/09/12
2.5K0
Quartz.NET的使用(附源码)
ASP.NET Core使用TopShelf部署Windows服务
asp.net core很大的方便了跨平台的开发者,linux的开发者可以使用apache和nginx来做反向代理,windows上可以用IIS进行反向代理。
梁规晓
2020/11/05
1.6K0
topshelf和quartz内部分享
阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客。 介绍 topshelf是创建windows服务的一种方式,相比原生实现ServiceBase、Install.Installer更为简单方便, 我们只需要几行代码即可实现windows服务的开发。topshelf本身支持windows及linux下mono上部署安装,同样也是开源的。 topshelf相对原生来说,调试起来比较方便,可以在开发时以控制台
蘑菇先生
2018/05/21
1K0
使用Topshelf创建自宿主的Windows服务程序
在传统的Windows服务开发过程中,需要添加一个服务安装程序,里面写安装,启动和停止服务等逻辑。现在,使用TopSelf可以简化这个过程。具体请看官网说明: http://docs.topshelf-project.com/en/latest/index.html 开始前,先创建一个控制台程序,添加 Topshelf 程序包引用: Install-Package Topshelf 首先,继承 ServiceControl 写一个应用服务类: internal class AppService : Ser
用户1177503
2018/02/26
1.1K0
创建Windows服务(Windows Services)N种方式总结
最近由于工作需要,写了一些windows服务程序,有一些经验,我现在总结写出来。 目前我知道的创建创建Windows服务有3种方式: a.利用.net框架类ServiceBase b.利用组件Topshelf c.利用小工具instsrv和srvany
跟着阿笨一起玩NET
2018/09/19
1.2K0
创建Windows服务(Windows Services)N种方式总结
topshelf和quartz内部分享
topshelf是创建windows服务的一种方式,相比原生实现ServiceBase、Install.Installer更为简单方便, 我们只需要几行代码即可实现windows服务的开发。topshelf本身支持windows及linux下mono上部署安装,同样也是开源的。
蘑菇先生
2018/07/24
1K0
通过TopShelf将OwinSelfHost自宿主打包成服务
基于当前文章进行代码配置后可开始进行本文章学习 用Owin Host实现脱离IIS跑Web API单元测试
happlyfox
2019/03/14
9850
通过TopShelf将OwinSelfHost自宿主打包成服务
利用Topshelf把.NET Core Generic Host管理的应用程序部署为Windows服务「建议收藏」
此文源于前公司在迁移项目到.NET Core的过程中,希望使用Generic Host来管理定时任务程序时,没法部署到Windows服务的问题,而且官方也没给出解决方案,只能关注一下官方issue #809 等他们方解决了。
全栈程序员站长
2022/09/27
6270
把 Console 部署成 Windows 服务,四种方式总有一款适合你!
一:背景 1. 讲故事 上周有一个项目交付,因为是医院级项目需要在客户的局域网独立部署。程序:netcore 2.0,操作系统:windows server 2012,坑爹的事情就来了, netcore sdk 一直装不上,网上找了资料说需要先安装 Visual C++ Redistributable for Visual Studio 2015, 开开心心下载下来又是安装失败,再次找资料说要打一堆 系统补丁,搞了一天!!!😤😤😤 环境总算是装好了,因为是 Console 服务程序,还得给它做成 wind
科控物联
2022/06/13
7060
把 Console 部署成 Windows 服务,四种方式总有一款适合你!
log4net使用注意事项
1配置Log4net Log4net的配置文件有几种使用方式,这里将配置log4net的部分独立出来,即关于log4net的配置独立成文件log4net.config。 1)写入Mysql log4net.config文件配置 <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> <configSections> <secti
甜橙很酸
2018/03/08
1.5K0
log4net使用注意事项
Log4Net ,.net和SQL Server的完美结合
不过,我在我这个项目中,具体使用的方法有点不同。 这个学生处学生信息管理系统,业务日志比较简单,其实并不需要使用log4net。所以在这个项目中,只用log4net来记录错误日志。 1.建立配置文件。
用户1258909
2018/07/03
9750
相关推荐
使用Topshelf部署Windows服务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档