简介

Topshelf允许我们快速的开发、调试和部署windows服务。

官方网站

使用方法

第一步:安装

Install-Package Topshelf

Install-Package Topshelf.Log4Net

虽然安装Topshelf.Log4Net不是必须的,不过建议安装。

第二步:实现服务逻辑

ServiceRunner.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.IO; using Topshelf;
using log4net;
using log4net.Config; namespace WHTR.Demos.Topshelf
{
public sealed class ServiceRunner : ServiceControl, ServiceSuspend
{
private static ILog Logger = LogManager.GetLogger(typeof(Program)); private Timer timer; static ServiceRunner()
{
var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");
XmlConfigurator.ConfigureAndWatch(logCfg);
} public bool Start(HostControl hostControl)
{
this.timer = new Timer(new TimerCallback(this.PrintMessage), null, 1000, 1000); return true;
} public bool Stop(HostControl hostControl)
{
throw new NotImplementedException();
} public bool Continue(HostControl hostControl)
{
throw new NotImplementedException();
} public bool Pause(HostControl hostControl)
{
throw new NotImplementedException();
}
private void PrintMessage(object state)
{
Logger.Info(DateTime.Now);
}
}
}

备注:要实现的接口及方法名意义非常明显,这里就不做过多说明了。

第三步:调用

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using Topshelf;
using Topshelf.ServiceConfigurators; namespace TopshelfDemos
{
class Program
{
static void Main(string[] args)
{
HostFactory.Run(x =>
{
//x.UseLog4Net("~/log4net.config"); x.Service<ServiceRunner>(); x.SetDescription("TopshelfDemos说明");
x.SetDisplayName("TopshelfDemos显示名称");
x.SetServiceName("TopshelfDemos服务名称"); x.EnablePauseAndContinue();
});
}
}
}

第四步:安装&卸载

  • 安装:TopshelfDemos.exe install
  • 卸载:TopshelfDemos.exe uninstall
  • 安装不同的实例:TopshelfDemos.exe install -instance "xxx" -servicename "xxx" -description "xxx" -displayname "xxx"
  • 卸载不同的实例 TopshelfDemos.exe uninstall -instance "xxx"

备注

以前以为开发Windows服务是多么高大上的东西,没想到这么简单。就两步,引用Topshelf.dll,然后实现接口,完成。

Topshelf入门的更多相关文章

  1. topshelf和quartz内部分享

    阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介绍 topshelf是创建windows ...

  2. topshelf和quartz

    topshelf和quartz内部分享 阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介 ...

  3. 参照示例搭建一个Quertz + Topshelf的一个作业调度服务(基础)

    学习网址:Quartz.NET 入门.使用Topshelf创建Windows服务 来自七七资料 1.直接下载源码 2.配置完成后,安装服务测试应用. 以下是遇到情况和加入的一些内容 1.在进行服务安装 ...

  4. C# Windows服务开发从入门到精通

    一.课程介绍 大家都知道如果想要程序一直运行在windows服务器上,最好是把程序写成windows服务程序:这样程序会随着系统的自动启动而启动,自动关闭而关闭,不需要用户直接登录,直接开机就可以启动 ...

  5. topshelf 开发windows 服务资料

    官方配置 http://docs.topshelf-project.com/en/latest/configuration/config_api.html#service-start-modes to ...

  6. Topshelf 和 Katana:统一的 Web 和服务体系结构

    Topshelf 和 Katana:统一的 Web 和服务体系结构 Wes McClure 下载代码示例 使用 IIS 托管 ASP.NET Web 应用程序已成为业界标准十年有余.构建此类应用程序的 ...

  7. 关于使用Topshelf创建服务

    目录 0. 背景说明 1. 使用Topshelf组件创建Windows服务 1.1 依赖Quartz.net实现定时任务 1.2 依赖于Topshelf创建服务类 1.3 log4net的配置文件lo ...

  8. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  9. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

随机推荐

  1. maven自动部署到远程tomcat教程

    使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,节省了大量时间. 本文章适用于tomcat的7.x ,8.x, 9.x版本. 下面是自动部的步骤 1,首先,配 ...

  2. information_schema系列三(文件,变量)

    这个系列的文章主要是为了能够让自己了解MySQL5.7的一些系统表,统一做一下备注和使用,也希望分享出来让大家能够有一点点的受益. 1:FILES 这张表提供了有关在MySQL的表空间中的数据存储的文 ...

  3. dockerfile学习与详解

    1,什么是dockerfile? dockerfile是相当于docker使用的一个脚本,作用是便于实现自定义的镜像image,用语docker build [OPTIONS] PATH ,只需要指定 ...

  4. asp.net项目下的web service返回json数据问题

    App_Code目录下放置WebService.cs文件,文件内容如: using System; using System.Collections.Generic; using System.Dat ...

  5. 比较详细PHP生成静态页面教程

    一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合, 也可以类,函数封装等形式,以模板的方式对用户请求进行处理.无论以何种方式,它的基本原理是这样的.由客 ...

  6. Groovy basic

    1. print println "Hello Groovy!" you can use java in Groovy System.out.println("Hello ...

  7. MATLAB - 练习程序,直方图均衡化

    直方图均衡化的作用是图像增强. 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布. 第一个问题.均衡化过程中,必须要保证两个条件:①像素无论怎么映射, ...

  8. Spring +SpringMVC 实现文件上传功能。。。

    要实现Spring +SpringMVC  实现文件上传功能. 第一步:下载 第二步: 新建一个web项目导入Spring 和SpringMVC的jar包(在MyEclipse里有自动生成spring ...

  9. 图解 & 深入浅出 JavaWeb:Servlet必会必知

    从[JavaEE 要懂的小事] Http相关,一直想写点Web开发相关的.最近项目接口开发紧,还有准备新的九月份战斗.JDK IO源码就隔一段落,温故知新看看Servlet & JSP 相关. ...

  10. laravel 事件的使用案例

    以下是我对事件使用的一些记录 创建事件 执行以下命令,执行完成后,会在 app\Events 下面出现一个 DeleteEvent.php 文件,事件就在次定义 php artisan make:ev ...