iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >详解.NET Core中的Worker Service
  • 284
分享到

详解.NET Core中的Worker Service

2024-04-02 19:04:59 284人浏览 泡泡鱼
摘要

目录Worker Service项目程序和后台服务Worker Service 中使用Logging运行Worker Service当你想到ASP.net core时,可能会想到WE

当你想到ASP.net core时,可能会想到WEB应用程序后端代码,包括mvcwebapi。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是一个可选标志,用于为项目提供输出文件夹名:


dotnet new worker -o myproject

程序和后台服务

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


public class Program
{
 public static void Main(string[] args)
 {
  CreateHostBuilder(args).Build().Run();
 }

 public static IHostBuilder CreateHostBuilder(string[] args) =>
  Host.CreateDefaultBuilder(args)
  .UseWindowsService()
  .ConfigureServices(services =>
  {
   services.AddHostedService<Worker>();
  });
 }

要注意的事情:

1. Main方法调用CreateHostBuilder()方法,并运行它。

2. 在asp.net Core中,WebHostBuilder将被Generic HostBuilder替代。

3. CreateHostBuilder()创建主机并通过调用AddHostService<T>

Worker.cs,定义如下:


public class Worker : BackgroundService
{
 // ...
 
 protected override async Task ExecuteAsync(CancellationToken stoppingToken)
 {
  // do stuff here
 }
}

要注意的事情:

1. Worker类实现BackgroundService 类,它来自命名空间Microsoft.Extensions.Hoting

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

Worker Service 中使用Logging

若要在Worker Service项目中使用日志记录,可以在Program.cs:


using Microsoft.Extensions.Logging;
public static IHostBuilder CreateHostBuilder(string[] args) =>
 Host.CreateDefaultBuilder(args)
 .UseWindowsService()
 .ConfigureLogging(loggerFactory => loggerFactory.AddEventLog())
 .ConfigureServices(services =>
 {
 services.AddHostedService<Worker>();
 });

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


Microsoft.Extensions.Logging.EventLog

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


using Microsoft.Extensions.Logging;

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

  • AddConsole()
  • ADDDebug()
  • AddEventLog()
  • AddEventSourceLogger()

这个Worker类通过注入ILogger<Work>对象到构造函数中:


private readonly ILogger<Worker> _logger;

public Worker(ILogger<Worker> logger)
{ 
  _logger = logger;
}

运行Worker Service

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


public static IHostBuilder CreateHostBuilder(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文件,请运行以下命令:


dotnet publish -o C:\path\to\project\pubfolder

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

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


> C:\Windows\System32\sc create MyServiceName binPath=C:\path\to\project\pubfolder\MyProjectName.exe

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


info: WorkerServiceSample.Worker[0] Making doc 1 at: 06/09/2019 00:09:52 -04:00Making your document...
info: WorkerServiceSample.Worker[0] Making doc 2 at: 06/09/2019 00:10:05 -04:00Making your document...
info: Microsoft.Hosting.Lifetime[0]
 Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
 Hosting environment: Development

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

以上就是详解.NET Core中的Worker Service的详细内容,更多关于.NET Core中的Worker Service的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解.NET Core中的Worker Service

本文链接: https://www.lsjlt.com/news/121532.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解.NET Core中的Worker Service
    目录Worker Service项目程序和后台服务Worker Service 中使用Logging运行Worker Service当你想到ASP.NET Core时,可能会想到We...
    99+
    2024-04-02
  • NET Core中的Worker Service是什么/怎么用
    本篇内容主要讲解“NET Core中的Worker Service是什么/怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“NET Core中的Worker Service是什么/怎么用”吧!...
    99+
    2023-06-09
  • .NET Core使用Worker Service创建服务
    需求来源 在几年前, 做的项目是依赖Windows服务来支撑一些业务, 目前已经把技术栈全部由.NET Framework 升级至 .NET Core x。 旧得需求大部分是,接入一...
    99+
    2024-04-02
  • .NET Core如何使用Worker Service创建服务
    这篇文章主要介绍了.NET Core如何使用Worker Service创建服务,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。需求来源在几年前, 做的项目...
    99+
    2023-06-29
  • .NET中Worker Service的使用方法
    这篇文章主要介绍了.NET中Worker Service的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。请先完成以下准备工作,以便于您理解本文。1、下载并安装最新的 ...
    99+
    2023-06-15
  • .NET 中Worker Service的使用入门
    目录什么是 .NET Core Worker Service?§Worker Service 的一些例子Worker Service 模板提供了什么?§1. Program.cs§2...
    99+
    2024-04-02
  • 在.NET Core中使用CSRedis的详细过程
    目录CSRedis开始之前字符串(string)使用CSRedis进行简单操作非正常情况列表(list)集合(set)散列(hashmap)有序集合事务Key的过期引用CSRedis...
    99+
    2024-04-02
  • .Net Core 进程守护之Supervisor使用详解
    目录介绍supervisor1、执行下列命令安装supervisor2、安装完成之后,我们到配置目录去添加两个配置文件 3、启动Supervisor4、Supervisor...
    99+
    2024-04-02
  • .NET Core 分布式任务调度ScheduleMaster详解
    目录1.什么是ScheduleMaster2.使用ScheduleMaster1.配置Http调度任务2.配置程序集调度任务3.使用Api接入任务1.API Server 对接流程2...
    99+
    2024-04-02
  • 运用.net core中实例讲解RabbitMQ
    目录一、RabbitMQ简介(1) AMQP协议(2)AMQP专业术语(3)RabbitMQ整体架构二、安装RabbitMQ三、RabbitMQ六种队列模式在.NetCor...
    99+
    2024-04-02
  • .Net Core 3.1 Web API基础知识详解(收藏)
    目录一、前言二、Swagger调试Web API三、配置文件四、文件上传五、统一WebApi数据返回格式六、模型验证七、日志使用八、依赖注入九、缓存十、异常处理十一、应用安全与JWT...
    99+
    2024-04-02
  • .NET Core中使用gRPC的方法
    目录1.什么是gRPC1.基本介绍2.proto文件3.上手实践2.gRPC流1.服务端流、客户端流、双向流2.NetCore Web项目作为客户端3.gRPC AOP拦截1.什么是...
    99+
    2024-04-02
  • .net core中的System.Buffers命名空间
    最近研究了一下.net core 2.1的基础类库,发现它引入了一个System.Buffers名字空间,里面提供了一系列比较实用的对象,便简单的管中窥豹浏览一下。 ArrayPoo...
    99+
    2024-04-02
  • .NET Core中的HttpClientFactory类怎么用
    小编给大家分享一下.NET Core中的HttpClientFactory类怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、HttpClient...
    99+
    2023-06-29
  • 如何在JavaScript中运行.NET Core代码详情
    目录一、前言二、DotNetJS三、Demo1. 创建项目2. 实现C#代码3. 实现JS代码4. 运行效果四、结论一、前言 在.NET Core中运行JavaScript代码,目前...
    99+
    2024-04-02
  • .NET Core利用 AsyncLocal 实现共享变量的代码详解
    目录简介AsyncLocal 解读总结简介 我们如果需要整个程序共享一个变量,我们仅需将该变量放在某个静态类的静态变量上即可(不满足我们的需求,静态变量上,整个程序都是固定值)。我们...
    99+
    2024-04-02
  • 一文掌握.Net core中的缓存
    目录1 Net Framewoke的缓存1.1 System.Web.Caching1.2 System.Runtime.Caching2 Net core的缓存介绍2.1 Memo...
    99+
    2024-04-02
  • .net core异常中间件的使用
    目录正文结正文 if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } 这样写入中间件哈,那么在env环境...
    99+
    2024-04-02
  • 详解Android中Service AIDL的使用
    目录前言Service基本用法——本地服务远程服务 —— AIDL服务端客户端前言 有些朋友可能是从事开发工作的时间不是特别的长,所以觉得Service相对与另外两个组件activi...
    99+
    2024-04-02
  • .net core静态中间件的使用
    目录正文结正文 我们使用静态文件调用: app.UseStaticFiles(); 那么这个默认会将我们根目录下的wwwroot作为静态目录。 这个就比较值得注意的,可能刚开...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作