文章原地址:http://www.80iter.com/blog/1451523192435464

Topshelf 创建.net服务整理和安装步骤

windowsService和topshelf服务区别请看 → windowsSevice程序和topshelf程序创建服务对比

Topshelf下载地址https://github.com/Topshelf/Topshelf/downloads

官网http://topshelf-project.com/

文档http://docs.topshelf-project.com/en/latest/

1、创建项目

2、添加Topshelf,使用nuget安装最新的topshelf程序包

3、编写测试代码,直接贴Program类代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System.Timers;
using Topshelf;
 
namespace TopShelfConsoleApplication
{
    public class TownCrier
    {
        TopshelfClass topshelfClass = new TopshelfClass();
        readonly Timer _timer;
        public TownCrier()
        {
            //设定了一个 1000 毫秒的服务执行间隔  
            _timer = new Timer(1000) { AutoReset = true };
            _timer.Elapsed += new ElapsedEventHandler(topshelfClass.Test);
        }
        public void Start() { _timer.Start(); }
        public void Stop() { _timer.Stop(); }
    }
 
    public class Program
    {
        public static void Main()
        {
            HostFactory.Run(x =>
            {
                x.Service<TownCrier>(s =>
                {
                    s.ConstructUsing(name => new TownCrier());
                    s.WhenStarted(tc => tc.Start());
                    s.WhenStopped(tc => tc.Stop());
                });
                x.RunAsLocalSystem();
                x.SetDescription("Topshlef服务描述......");
                x.SetDisplayName("TopshlefTest");
                x.SetServiceName("TopshlefTest");
            });
        }
    }
}

TopshelfClass处理类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.IO;
using System.Timers;
 
namespace TopShelfConsoleApplication
{
    public class TopshelfClass
    {
        public void Test(object source, ElapsedEventArgs e)
        {
            string path = "F:\\TopshelfTest\\TopshelfTest.txt";
            FileStream fs = new FileStream(path, FileMode.Append);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(DateTime.Now.ToString());
            sw.Close();
            fs.Close();
        }
    }
}

具体说明请参照官网给的技术解释文档,我就不在这里解释代码咯:https://topshelf.readthedocs.org/en/latest/configuration/quickstart.html

我只说明一点:上面代码设置为1秒执行一次,在txt文件追加下时间戳,为了防止本地开发测试的调试问题,可以设置属性:

4、发布部署

a、发布部署包,自行处理

b、进入cmd命令,进入部署包目录,找到exe文件执行install安装命令,如下图:

c、查看本机服务,可见已经安装成功:

d、安装n个相同服务使用命令:-instance " test1" install

e、常用命令

1
2
3
4
5
install:ConsoleApplication1.exe install
start:ConsoleApplication1.exe start ,执行后服务被启动
stop:ConsoleApplication1.exe stop ,执行后服务被停止
uninstall:ConsoleApplication1.exe uninstall,执行后服务被卸载
-instance:  ConsoleApplication1.exe -instance " test1" install

5、测试服务运行,开启两个服务,结果如下:

至此,简单的topshelf服务使用就完成咯~~~~~

windowsSevice程序和topshelf程序创建服务对比的更多相关文章

  1. Net Core基于TopShelf程序运行于服务模式

    目录 Net Core基于TopShelf程序运行于服务模式 1 背景 2 优势 2.1 服务模式可设置重启条件 2.2 避免误操作 3.使用 3.1 GUI方式安装Topshelf包 4 配置 5 ...

  2. C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe

    不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给大家提供一种方式,直接使用我们的程序来安装/卸载服务,并且可以 ...

  3. [转]C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe

    写在前面 原文地址:C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe 这篇文章躺在我的收藏夹中有很长一段时间了,今天闲着没事,就自己动手实践了一下.感觉 ...

  4. C#创建服务及使用程序自动安装服务

    .NET创建一个即是可执行程序又是Windows服务的exe 不得不说,.NET中安装服务很麻烦,即要创建Service,又要创建ServiceInstall,最后还要弄一堆命令来安装和卸载. 今天给 ...

  5. Ubuntu上使用systemd创建服务文件来启动和监视底层网络应用程序实现守护进程

    在Linux上使用Nginx设置ASP.NET Core的托管环境,并部署到它 创建服务文件 创建服务定义文件: sudo vim /etc/systemd/system/kestrel-basic. ...

  6. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  7. Topshelf便捷创建Windows服务

    结合Quartz.net学习,前提已经创建了一个定时任务,可见 <定时调度框架:Quartz.net> (基于配置文件形式) 首先引用Topshelf.dll 自定义服务TestServi ...

  8. .net core+topshelf+quartz创建windows定时任务服务

    .net core+topshelf+quartz创建windows定时任务服务 准备工作 创建.net core 控制台应用程序,这里不做过多介绍 添加TopShelf包:TopShelf: 添加Q ...

  9. 关于使用Topshelf创建服务

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

随机推荐

  1. Oracle 正则

    https://www.cnblogs.com/qmfsun/p/4467904.html 匹配汉字可以用Oracle 内置函数 unistr('\4e00') -unistr('\9fa5') 来定 ...

  2. 代码详解:TensorFlow Core带你探索深度神经网络“黑匣子”

    来源商业新知网,原标题:代码详解:TensorFlow Core带你探索深度神经网络“黑匣子” 想学TensorFlow?先从低阶API开始吧~某种程度而言,它能够帮助我们更好地理解Tensorflo ...

  3. C#串口数据收发数据

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  4. pandas操作行集锦

    pandas移花接木 数据准备两表: 我们接下来要进行的操作: 增 将两表进行合并 # 把两张表合并,但是这样有问题,索引会重复的进行0-19 students = page_001.append(p ...

  5. ELK收集日志到mysql

    场景需求 在使用ELK对日志进行收集的时候,如果需要对数据进行存档,可以考虑使用数据库的方式.为了便于查询,可以同时写一份数据到Elasticsearch 中. 环境准备 CentOS7系统: 192 ...

  6. Hadoop2.7.7_HA高可用部署

    1. Hadoop的HA机制 前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 1.1. HA的运作机制 (1)hadoop-HA集群运作机制介绍 所谓HA,即高可用(7*2 ...

  7. tensorflow实现二分类

    读万卷书,不如行万里路.之前看了不少机器学习方面的书籍,但是实战很少.这次因为项目接触到tensorflow,用一个最简单的深层神经网络实现分类和回归任务. 首先说分类任务,分类任务的两个思路: 如果 ...

  8. Python基础 ----- 流程控制

    ------   条件判断 if 条件判判断语法: 条件判断注意: 1.由if 条件起始 2.关键字后面要加一个空格 3.条件后面接: 4.符合python代码缩进格式 5.条件判断可以有多种组合方式 ...

  9. GlusterFS

    1.      GlusterFS概述 GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处 ...

  10. Java几种常用JSON库性能比较

    本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能. 每次都在网上看到别人说什么某某库性能是如何如何的好,碾压其他的库.但是百闻不如一见,只有自己亲手测试过的才是最值得相信的. JSON ...