NET Core中的Worker Service是什么/怎么用
本篇内容主要讲解“NET Core中的Worker Service是什么/怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“NET Core中的Worker Service是什么/怎么用”吧!
当你想到ASP.NET Core时,可能会想到Web应用程序后端代码,包括MVC和WebAPI。MVC视图和Razor页面还允许使用后端代码生成带有HTML元素的前端UI。全新的Blazor更进一步,允许使用WebAssembly在Web浏览器中运行客户端.NET代码。最后,我们现在有了一个Worker Service应用程序的模板。
这是在ASP.NET Core早期预览中引入的。虽然项目模板最初列在Web模板下,但此后在向导中重新定位了一个级别。这是在.NET Core中创建长时间运行的跨平台服务的好方法。本文介绍Windows操作系统。
Worker Service项目
在VisualStudio 2019中创建新的Worker Service项目的最快方法是使用最新模板。还可以使用适当的DotNetCLI命令。
启动VisualStudio并选择Worker Service模板,如下所示:
要使用命令行,使用以下命令,-o是一个可选标志,用于为项目提供输出文件夹名:
dotnetnewworker-omyproject
程序和后台服务
Program.cs类包含Main()方法和CreateHostBuilder()方法。这可以在下面的片段中看到:
publicclassProgram { publicstaticvoidMain(string[]args) { CreateHostBuilder(args).Build().Run(); } publicstaticIHostBuilderCreateHostBuilder(string[]args)=> Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices(services=> { services.AddHostedService<Worker>(); }); }
要注意的事情:
1.Main方法调用CreateHostBuilder()方法,并运行它。
2.在ASP.NET Core中,WebHostBuilder将被GenericHostBuilder替代。
3.CreateHostBuilder()创建主机并通过调用AddHostService<T>
Worker.cs,定义如下:
publicclassWorker:BackgroundService { //... protectedoverrideasyncTaskExecuteAsync(CancellationTokenstoppingToken) { //dostuffhere } }
要注意的事情:
1.Worker类实现BackgroundService类,它来自命名空间Microsoft.Extensions.Hoting
2.然后,Worker类可以重写ExecuteAsync()方法来执行任何长期运行的任务。
Worker Service 中使用Logging
若要在Worker Service项目中使用日志记录,可以在Program.cs:
usingMicrosoft.Extensions.Logging; publicstaticIHostBuilderCreateHostBuilder(string[]args)=> Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureLogging(loggerFactory=>loggerFactory.AddEventLog()) .ConfigureServices(services=> { services.AddHostedService<Worker>(); });
1.在使用扩展方法之前,将其NuGet包添加到项目中:
Microsoft.Extensions.Logging.EventLog
2.将适当的命名空间添加到代码中:
usingMicrosoft.Extensions.Logging;
3.调用方法ConfigreLogging()并调用适当的日志记录方法,例如:AddEventLog()。
AddConsole()
AddDebug()
AddEventLog()
AddEventSourceLogger()
这个Worker类通过注入ILogger<Work>对象到构造函数中:
privatereadonlyILogger<Worker>_logger; publicWorker(ILogger<Worker>logger) { _logger=logger; }
运行Worker Service
在继续之前,请将调用添加把UseWindowsService()添加到Program类或者确认它已经在那里了。官方文档中UseServiceBaseLifetime()在预览版中。在新的版本此方法已重命名为UseWindowsService()中。
publicstaticIHostBuilderCreateHostBuilder(string[]args)=> Host.CreateDefaultBuilder(args) .UseWindowsService() .ConfigureServices(services=> { services.AddHostedService<Worker>(); });
根据代码文档,UseWindowsService()进行下列工作:
1.将主机生存期设置为WindowsServiceLifetime
2.设置ContentRoot
3.启用以应用程序名称作为默认名称的事件日志记录。
你可以以各种方式运行Worker Service:
1.在VisualStudio中生成和调试/运行。
2.发布到exe文件并运行它
3.运行sc(从Windows\System 32)创建新服务
若要将Worker Service发布为具有依赖关系的exe文件,请运行以下命令:
dotnetpublish-oC:\path\to\project\pubfolder
-o参数可用于指定要生成已发布文件的文件夹的路径。它可以是指向项目文件夹的路径,然后是一个新的子文件夹名,以保存已发布的文件。
若要创建新服务,请运行sc.exe从System 32文件夹中传入从发布命令生成的exe文件的名称。
>C:\Windows\System32\sccreateMyServiceNamebinPath=C:\path\to\project\pubfolder\MyProjectName.exe
当手动运行服务时,你将看到以下的日志输出:
info:WorkerServiceSample.Worker[0]Makingdoc1at:06/09/201900:09:52-04:00Makingyourdocument... info:WorkerServiceSample.Worker[0]Makingdoc2at:06/09/201900:10:05-04:00Makingyourdocument... info:Microsoft.Hosting.Lifetime[0] Applicationstarted.PressCtrl+Ctoshutdown. info:Microsoft.Hosting.Lifetime[0] Hostingenvironment:Development
服务安装完成后,会出现在Windows的服务列表中:
到此,相信大家对“NET Core中的Worker Service是什么/怎么用”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
推荐阅读
-
.Net Core怎么解决WebAPI中返回时间格式带T的问题
-
ASP.NET的Core AD域登录过程怎么实现
ASP.NET的Core AD域登录过程怎么实现本文小编为大家详细...
-
.NET Core如何使用Worker Service创建服务
.NET Core如何使用Worker Service创建服务这篇...
-
ASP.NET Core Zero模块系统的示例分析
ASP.NET Core Zero模块系统的示例分析这篇文章主要为...
-
基于NET Core的Nuget包制作、发布和运用方法
-
.Net Core服务治理Consul健康检查方法是什么
-
.Net Core Ocelot超时、熔断、限流的概念是什么
-
C#怎么用ASP.NET Core开发学生管理系统
-
.Net Core微服务网关Ocelot基础知识有哪些
-
omni core api使用方法有哪些
omnicoreapi使用方法有哪些这篇文章主要讲解了“omn...