热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

.NETCore3.0创建WorkerServices的实现

这篇文章主要介绍了.NETCore3.0创建WorkerServices的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

.NET CORE 3.0新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,并且能轻松的部署成windows服务或linux守护程序。如果安装的vs2019是中文版本,Worker Services变成了辅助角色服务。Worker Services 咱也不知道怎么翻译成了这个名称,咱也不敢乱翻译,下文就保持原名称。。。,本文将会演示如何创建一个Worker Services项目,并且部署为windows服务或linux守护程序运行;

开始创建worker service 项目

创建新项目——》选择辅助角色服务

项目创建成功之后,您会看到创建了两个类:Program和Worker。

Program.cs

public static void Main(string[] args)
    {
      CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
          .ConfigureServices((hostContext, services) =>
        {
          services.AddHostedService();
        });

Program类跟ASP.NET Core Web应用程序非常类似,不同之处没有了startup类,并且把worker服务添加到DI container中。

Worker.cs

public class Worker : BackgroundService
  {
    private readonly ILogger _logger;

    public Worker(ILogger logger)
    {
      _logger = logger;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
      while (!stoppingToken.IsCancellationRequested)
      {
        _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
        await Task.Delay(1000, stoppingToken);
      }
    }
  }

worker只是一个简单的类,它继承自BackgroundService,而后者又实现IHostedService接口。

默认的worker演示,没隔1秒,循环打印运行的时间。

部署为Windows服务运行1.在项目中添加nuget包:Microsoft.Extensions.Hosting.WindowsServices

2.然后在program.cs内部,将UseWindowsService()添加到CreateHostBuilder

public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
       .UseWindowsService()
        .ConfigureServices((hostContext, services) =>
        {
          services.AddHostedService();
        });

3.执行一下命令发布项目

dotnet publish -c Release -o C:\WorkerPub

4.然后使用sc.exe工具来管理服务,输入一下命令创建为windows服务

sc.exe create DemoWorkService binPath=C:\WorkerPub\WorkerService1.exe

查看服务状态使用一下命令

sc.exe query DemoWorkService 

启动命令

sc.exe start DemoWorkService 

在服务列表查看,DemoWorkService已安装成功

停用 、删除命令

sc.exe stop DemoWorkService 
sc.exe delete DemoWorkService 

部署作为Linux守护程序运行

部署linux守护程序也是很方便的执行一下两个步骤即可:

添加Microsoft.Extensions.Hosting.Systemd NuGet包到项目中,并告诉你的新Worker,其生命周期由systemd管理!

将UseSystemd()添加到主机构建器中。

public static IHostBuilder CreateHostBuilder(string[] args) =>
  Host.CreateDefaultBuilder(args)
    .UseSystemd()
    .ConfigureServices((hostContext, services) =>
    {
      services.AddHostedService();
    });

到此这篇关于.NET Core3.0创建Worker Services的实现的文章就介绍到这了,更多相关.NET Core3.0创建Worker Services内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 基于LNMP环境安装配置phpMyAdmin4.8
    phpMyAdmin是一个以PHP为基础、以Web-Base方式架构在网站主机上的、可以通过web方式管理和操作MySQL数据库的管理工具。本文主要内容为基于LNMP环境安装php ... [详细]
  • 接着《扒一扒Nodejsformidable的onPart》和《也说文件上传之兼容IE789的进度条丢掉flash》;前面已完成兼容IE789的大文件上传:无flash的低版本进度 ... [详细]
  • ```#include#include#include#include#defineMAX_Hnodes1#defineMIN_Hnodes2#defineLLlonglongus ... [详细]
  • 答题:消息队列的核心功能就是:解耦合,异步,流量削峰解耦:接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负责人濒临崩 ... [详细]
  • 深度搜索DFS!
    好的,接下来就是本萌新的第一篇博客啦。直接上深搜!深度优先搜索(Depth-First-Search),简称“深搜”(dfs),是我们蒟蒻们最基本的搜索操作之一。简单地说,深搜就是 ... [详细]
  • win10子系统centos_在win10中使用WSL搭建Linux开发平台
    使用Windows机器进行开发的同学看见使用LinuxMac的同学在shell里面敲两条命令就搭建好了开发环境,表示十分羡慕.那么Win10自带的WSL(WindowsSubsys ... [详细]
  • 1、博客签名换行的代码2、效果3、好玩吧。HTML+CSS,要学习。HTML5+CSS ... [详细]
  • TinyOS系统与nesC程序设计课内实验指导书TinyOS系统与nesC程序设计课内实验指导书课内实验项目一览表序号实验项目学时类型每组人数基本教学要求1编程环境的建立221熟悉 ... [详细]
  • cURL是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持cURL库。本文将介绍cURL的一些高级特性,以 ... [详细]
  • 1、在windows7操作系统上,下载vmware,并安装。下载地址:http:xzc.197746.comVMware-workstation-full1413.zip安装完之后 ... [详细]
  • httprunner3.X相比httprunner2.X系统中会新增4个命令:httprunner:核心命令hrun:httprunner的缩写,功能与httprunner完全相同 ... [详细]
  • 2.2 与球体相交几何解
    现在,一个简单的球体相交例子已经被概述。这里有一些关于计算效率的概念。一个普遍的看法是,应该尽可能地避免使用平方根函数。检查计时:sqrt()耗时通常是乘法的15~30倍。类似的, ... [详细]
  • FTP弱密码将FTP服务器的密码更改为强密码vietcvsftpdvsftpd.confanonymous_enableNO#禁止匿名登录重启ftp服务 ... [详细]
  • 2017年5月24日星期三--出埃及记Exodus26:12Asfortheadditionallengthofthetentcurtains,thehalfcurtainthat ... [详细]
  • 一、昨天做的因为今天是第一天,所以昨天只是开了个会,分配了一些任务,我和小组的另一成员zyp做的是开机启动的代码实现。二、遇到的问题今天做的是开机启动的功能。在开机启动的代码上,我 ... [详细]
author-avatar
不会游泳的小饼儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有