.NET Core如何使用Worker Service创建服务
.NET Core如何使用Worker Service创建服务
这篇文章主要介绍了.NETCore如何使用WorkerService创建服务,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
需求来源
在几年前, 做的项目是依赖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相同。
publicclassProgram{publicstaticvoidMain(string[]args){CreateHostBuilder(args).Build().Run();}publicstaticIHostBuilderCreateHostBuilder(string[]args)=>Host.CreateDefaultBuilder(args).UseWindowsService().ConfigureServices((hostContext,services)=>{services.AddHostedService<Worker>();});}
可以看到在配置服务中,AddHostedService添加了一个Worker, 类型约束IHostedService
关于Worker类的实现
publicclassWorker:BackgroundService{privatereadonlyILogger<Worker>_logger;publicWorker(ILogger<Worker>logger){_logger=logger;}protectedoverrideasyncTaskExecuteAsync(CancellationTokenstoppingToken){while(!stoppingToken.IsCancellationRequested){_logger.LogInformation("Workerrunningat:{time}",DateTimeOffset.Now);awaitTask.Delay(1000,stoppingToken);}}}
ExecuteAsync
在服务启动时,会执行该方法,每秒钟输入当前时间
查看父类BackgroundService的实现,可以看到有支持重写的方法。
publicvirtualvoidDispose();publicvirtualTaskStartAsync(CancellationTokencancellationToken);publicvirtualTaskStopAsync(CancellationTokencancellationToken);
意思就是,我们可以在启动服务时候触发的逻辑以及暂停服务触发的逻辑都可以自行编写。
安装服务
发布之后,即可使用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
感谢你能够认真阅读完这篇文章,希望小编分享的“.NETCore如何使用WorkerService创建服务”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!
推荐阅读
-
swoole的task模块你知道可以应用在哪些地方?
-
.Net Core怎么解决WebAPI中返回时间格式带T的问题
.Net Core怎么解决WebAPI中返回时间格式带T的问题这篇...
-
ASP.NET的Core AD域登录过程怎么实现
ASP.NET的Core AD域登录过程怎么实现本文小编为大家详细...
-
ASP.NET Core Zero模块系统的示例分析
ASP.NET Core Zero模块系统的示例分析这篇文章主要为...
-
基于NET Core的Nuget包制作、发布和运用方法
基于NET Core的Nuget包制作、发布和运用方法这篇“基于N...
-
.Net Core服务治理Consul健康检查方法是什么
.Net Core服务治理Consul健康检查方法是什么这篇文章主...
-
.Net Core Ocelot超时、熔断、限流的概念是什么
.Net CoreOcelot超时、熔断、限流的概念是什么本篇内...
-
C#怎么用ASP.NET Core开发学生管理系统
C#怎么用ASP.NET Core开发学生管理系统本篇内容介绍了“...
-
.Net Core微服务网关Ocelot基础知识有哪些
.Net Core微服务网关Ocelot基础知识有哪些本篇内容介绍...
-
如何进行Worker中Executor启动过程源码分析
如何进行Worker中Executor启动过程源码分析本篇文章为大...