欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

详解.NET Core中的Worker Service

程序员文章站 2022-04-12 23:39:42
当你想到asp.net core时,可能会想到web应用程序后端代码,包括mvc和webapi。mvc视图和razor页面还允许使用后端代码生成带有html元素的前端ui。全新的blazor更进一步,...

当你想到asp.net core时,可能会想到web应用程序后端代码,包括mvc和webapi。mvc视图和razor页面还允许使用后端代码生成带有html元素的前端ui。全新的blazor更进一步,允许使用webassembly在web浏览器中运行客户端.net代码。最后,我们现在有了一个worker service应用程序的模板。

这是在asp.net core早期预览中引入的。虽然项目模板最初列在web模板下,但此后在向导中重新定位了一个级别。这是在.net core中创建长时间运行的跨平台服务的好方法。本文介绍windows操作系统。

详解.NET Core中的Worker Service

worker service项目

在visualstudio 2019中创建新的worker service项目的最快方法是使用最新模板。还可以使用适当的dotnetcli命令。

启动visualstudio并选择worker service模板,如下所示:

详解.NET Core中的Worker Service

要使用命令行,使用以下命令,-o是一个可选标志,用于为项目提供输出文件夹名:

程序和后台服务

program.cs类包含main()方法和createhostbuilder()方法。这可以在下面的片段中看到:

要注意的事情:

1. main方法调用createhostbuilder()方法,并运行它。

2. 在asp.net core中,webhostbuilder将被generic hostbuilder替代。

3. createhostbuilder()创建主机并通过调用addhostservice<t>

worker.cs,定义如下:

要注意的事情:

1. worker类实现backgroundservice 类,它来自命名空间microsoft.extensions.hoting

2. 然后,worker类可以重写executeasync()方法来执行任何长期运行的任务。

worker service 中使用logging

若要在worker service项目中使用日志记录,可以在program.cs:

1.在使用扩展方法之前,将其nuget包添加到项目中:

2.将适当的命名空间添加到代码中:

3.调用方法configrelogging()并调用适当的日志记录方法,例如:addeventlog()。

  • addconsole()
  • adddebug()
  • addeventlog()
  • addeventsourcelogger()

这个worker类通过注入ilogger<work>对象到构造函数中:

运行worker service

在继续之前,请将调用添加把usewindowsservice()添加到program类或者确认它已经在那里了。官方文档中useservicebaselifetime()在预览版中。在新的版本此方法已重命名为usewindowsservice()中。

根据代码文档,usewindowsservice()进行下列工作:

1. 将主机生存期设置为windowsservicelifetime

2. 设置 contentroot

3. 启用以应用程序名称作为默认名称的事件日志记录。

你可以以各种方式运行worker service:

1.在visualstudio中生成和调试/运行。

2.发布到exe文件并运行它

3.运行sc(从windows\system 32)创建新服务

若要将worker service发布为具有依赖关系的exe文件,请运行以下命令:

-o参数可用于指定要生成已发布文件的文件夹的路径。它可以是指向项目文件夹的路径,然后是一个新的子文件夹名,以保存已发布的文件。

若要创建新服务,请运行sc.exe从system 32文件夹中传入从发布命令生成的exe文件的名称。

当手动运行服务时,你将看到以下的日志输出:

服务安装完成后,会出现在windows的服务列表中:

详解.NET Core中的Worker Service

以上就是详解.net core中的worker service的详细内容,更多关于.net core中的worker service的资料请关注其它相关文章!