.NET Core创建Worker Services
.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<Worker> ();
});
Program类跟ASP.NET Core Web应用程序非常类似,不同之处没有了startup类,并且把worker服务添加到DI container中。
Worker.cs
public class Worker : BackgroundService {
private readonly ILogger<Worker> _logger;
public Worker (ILogger<Worker> logger) {
_logger = logger;
}
protected override async Task ExecuteAsync (CancellationToken stoppingToken) {
while (!stoppingToken.IsCancellationRequested) {
_logger.LogInformation ("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay (, stoppingToken);
}
}
}
如果你看到这段文字,说明您正使用RSS阅读或转自《一棵树-博客园》,原文地址:https://www.cnblogs.com/atree/p/netcore-worker-service.html
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<Worker> ();
});
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<Worker> ();
});
.NET Core创建Worker Services的更多相关文章
- .NET Core3.0创建Worker Services
.NET CORE 3.0新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,并且能轻松的部署成windows服务或linux守护程序.如果安装的vs2019是中文版本,W ...
- 使用.NET Core创建Windows服务 - 使用.NET Core工作器方式
原文:Creating Windows Services In .NET Core – Part 3 – The ".NET Core Worker" Way 作者:Dotnet ...
- Worker Services的新项目模板
.NET Core3.0创建Worker Services2019-10-24 09:05 成天 阅读(1438) 评论(20) 编辑收藏 .NET CORE 3.0新增了Worker Ser ...
- 在 ASP.NET Core和Worker Service中使用Quartz.Net
现在有了一个官方包Quartz.Extensions.Hosting实现使用Quartz.Net运行后台任务,所以把Quartz.Net添加到ASP.NET Core或Worker Service要简 ...
- 使用.NET Core创建Windows服务(二) - 使用Topshelf方式
原文:Creating Windows Services In .NET Core – Part 2 – The "Topshelf" Way 作者:Dotnet Core Tut ...
- .NET Core 创建Windows服务
.NET Core 创建Windows服务 作者:高堂 原文地址:https://www.cnblogs.com/gaotang/p/10850564.html 写在前面 使用 TopShelf+Au ...
- 使用.NET Core创建Windows服务(一) - 使用官方推荐方式
原文:使用.NET Core创建Windows服务(一) - 使用官方推荐方式 原文:Creating Windows Services In .NET Core – Part 1 – The &qu ...
- 【EFCore】利用Entityframework Core创建数据库模型
利用Entityframework Core创建数据库模型 本文中Entityframework Core版本为v3.1.6 简介 Entity Framework (EF) Core 是微软轻量化. ...
- 温故知新,使用ASP.NET Core创建Web API,永远第一次
ASP.NET Core简介 ASP.NET Core是一个跨平台的高性能开源框架,用于生成启用云且连接Internet的新式应用. 使用ASP.NET Core,您可以: 生成Web应用和服务.物联 ...
随机推荐
- [Delphi]无边框窗口最大化不挡任务栏方法
procedure WMGetMinMaxInfo(var mes: TWMGetMinMaxInfo); message WM_GetMinMaxInfo; procedure TfrmMain.W ...
- WPF,ComboBox,取汉字首字母,extBoxBase.TextChanged
1取汉字汉语拼音首字母: private static string GetFirstLetterOfChineseString(string CnChar) { long iCnChar; byte ...
- git和小乌龟在windows下安装
一:所需软件 (1):git 下载地址:https://git-scm.com/download (2):TortoiseGit 下载地址:https://tortoisegit.org/downlo ...
- Asp.Net MVC控制器获取视图传值几种方式
前台表单(V:视图) @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="v ...
- QT 使用QSetting读取配置文件中的中文乱码解决方案
windows下方案: 首先需要将ini文件改成UTF-8或GB2312编码格式,可以通过notepad++工具实现.然后在配置项中填入中文,如下: 接着在程序中使用 QSettings settin ...
- 1-11Set结构
集合 只保留下来唯一的元素 tang=[123,123,456,789,] tang=set(tang) tang {123, 456, 789} tang=set() type(tang) set ...
- [基础]斯坦福cs231n课程视频笔记(三) 训练神经网络
目录 training Neural Network Activation function sigmoid ReLU Preprocessing Batch Normalization 权重初始化 ...
- Linux---用户及权限管理类命令
1.Linux用户 分为三类: 超级用户:拥有最高权限 系统用户:与系统服务相关,但不能用于登录 普通用户:由超级用户创建并赋予权限,只能操作其拥有权限的文件和目录,只能管理自己启动的进程 2.用户管 ...
- Windows下使用mingw+cmake编译C/C++程序
按照正常流程安装好mingw和cmake后,仍然是无法直接使用cmake编译处MakeFile文件的,我们需要在CMakeLists.txt中做一些配置. 首先,在PROJECT之前,设置: SET( ...
- fitEllipse的外接矩形与拟合的椭圆参数关系
根据我看的博客,fitEllipse返回的外接矩形(假设为box),对应椭圆的相应参数: box.size.width 和box.size.height对应椭圆的长轴和短轴: box.center对应 ...