您现在的位置是:网站首页> 编程资料编程资料
.NET Core使用Worker Service创建服务_实用技巧_
2023-05-24
324人已围观
简介 .NET Core使用Worker Service创建服务_实用技巧_
需求来源
在几年前, 做的项目是依赖Windows服务来支撑一些业务, 目前已经把技术栈全部由.NET Framework 升级至 .NET Core x。
旧得需求大部分是,接入一些第三方得硬件设备, 例如PLC、串口读卡器、TCP阅读器、各种硬件模块。
为了能够让任何开发语言接入无需重新实现, 所以使用Windows服务添加支持各类硬件API、对外使用MQTT.NET来进行协议开发。
版本更新
考虑到目前软件的更新,其中包括安装文件、SDK都是基于.NET Core, 所以使用Worker Service来创建服务, 该服务支持在Windows与Linux运行。
创建WorkerService
创建完成后, 整个默认项目包含Program以及一个Worker示例, 配置的模式与ASP.NET Core相同。
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices((hostContext, services) => { services.AddHostedService(); }); } 可以看到在配置服务中,AddHostedService添加了一个Worker, 类型约束IHostedService
关于Worker类的实现
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); } } } - ExecuteAsync
在服务启动时,会执行该方法,每秒钟输入当前时间
查看父类BackgroundService的实现,可以看到有支持重写的方法。
public virtual void Dispose(); public virtual Task StartAsync(CancellationToken cancellationToken); public virtual Task StopAsync(CancellationToken cancellationToken);
意思就是,我们可以在启动服务时候触发的逻辑以及暂停服务触发的逻辑都可以自行编写。
安装服务
发布之后,即可使用sc.exe 来安装/启动/暂停/卸载服务等。
- 安装服务
sc.exe create MyService binPath=C:\User\WorkerService.exe - 查询服务状态
sc.exe query MyService - 启动服务
sc.exe start MyService - 暂停服务
sc.exe stop MyService - 卸载服务
sc.exe delete MyService
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
相关内容
- .NET 6新特性试用Timer类之PeriodicTimer _ASP.NET_
- asp.core 同时兼容JWT身份验证和Cookies 身份验证两种模式(示例详解)_实用技巧_
- ASP.Net Core MVC基础系列之环境设置_基础应用_
- ASP.Net Core MVC基础系列之中间件_基础应用_
- ASP.Net Core MVC基础系列之服务注册和管道_基础应用_
- ASP.Net Core MVC基础系列之获取配置信息_基础应用_
- ASP.Net Core MVC基础系列之项目创建_基础应用_
- ASP.net(C#)实现简易聊天室功能_实用技巧_
- 一次.net core异步线程设置超时时间的实战记录_实用技巧_
- WPF使用代码创建数据模板DataTemplate_实用技巧_
