.NET Core 3.1和WorkerServices构建Windows服务
2021-01-19 12:12
标签:ogr ilog conf spn 扩展 master ref 通过 linux ASP.NET Core 3增加了一个非常有意思的功能Worker Service.他是一个ASP.NET Core模板,他允许我们创建托管长期的运行的后台服务,这些服务具体实现IHostedService接口的后台任务逻辑,他被成为"托管服务".同时他们可以部署到windows中Windows服务,以及Linux守护程序. 我们通过命令行界面中的dotnet new 命令。通过如下代码创建一个名为customWorker的WorkerService的应用。 Program.cs: Worker: BackgroundService是实现了IHostedService的基类.调用 ExecuteAsync(CancellationToken) 来运行后台服务。实现返回一个Task,其表示后台服务整个生存期.在 ExeuteAsync(例如通过调用await)之前,不会启动任何其他服务.避免在ExecuteAsync中执行长时间的阻塞初始化. StopAsync(CancellationToekn) 中的主机块等待完成ExecuteAsync。 调用 IHostedService.StopAsync 时,将触发取消令牌。 当激发取消令牌以便正常关闭服务时,ExecuteAsync 的实现应立即完成。 否则,服务将在关闭超时后不正常关闭。 已使用AddHostedService扩展方法在 IHostBuilder.ConfigureServices(Program.cs)中注册该服务。 安装 WorkerServices模板 在IHostBuilder使用UseWindowsService扩展方法 现在我们可以部署我们的windows服务了。 发布方式 https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-3.1&tabs=visual-studio https://github.com/hueifeng/BlogSample/tree/master/src/WorkerServiceDemo .NET Core 3.1和WorkerServices构建Windows服务 标签:ogr ilog conf spn 扩展 master ref 通过 linux 原文地址:https://www.cnblogs.com/yyfh/p/12159091.html
介绍
创建一个托管服务
dotnet new worker -o customWorker
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace WorkerServiceDemo
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace WorkerServiceDemo
{
public class Worker : BackgroundService
{
private readonly ILogger
services.AddHostedService
WorkerServices部署到Windows服务
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace WorkerServiceDemo
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService
发布Windows服务
dotnet restore
dotnet publish
sc.exe部署
sc.exe create DemoWorker binpath= publish\xxxx.exe
sc.exe start WorkerServicesName
部署exe文件
WorkerServicesName.exe install
WorkerServicesName.exe start
使用sc.exe停止和删除
sc.exe stop WorkerServicesName
sc.exe delete WorkerServicesName
非sc.exe停止和删除
WorkerServicesName stop
WorkerServicesName uninstall
Reference
文章标题:.NET Core 3.1和WorkerServices构建Windows服务
文章链接:http://soscw.com/index.php/essay/44069.html