首页 > 编程语言 >在 ASP.NET Core 中使用托管服务实现后台任务

在 ASP.NET Core 中使用托管服务实现后台任务

时间:2024-05-19 10:52:28浏览次数:28  
标签:Core ASP 服务 CancellationToken 托管 StartAsync 后台任务 StopAsync

在 ASP.NET Core 中,后台任务作为托管服务实现。 托管服务是一个类,具有实现 IHostedService 接口的后台任务逻辑。 本文提供了三个托管服务示例:

程序包

基于辅助角色服务模板的应用使用 Microsoft.NET.Sdk.Worker SDK,并且具有对 Microsoft.Extensions.Hosting 包的显式包引用。 有关示例,请参阅示例应用的项目文件 (BackgroundTasksSample.csproj)。

对于使用 Microsoft.NET.Sdk.Web SDK 的 Web 应用,通过共享框架隐式引用 Microsoft.Extensions.Hosting 包。 在应用的项目文件中不需要显式包引用。

IHostedService 接口(仅限于短期任务)

IHostedService 接口为主机托管的对象定义了两种方法:

StartAsync

StartAsync(CancellationToken) 包含用于启动后台任务的逻辑。 在以下操作之前调用 StartAsync

StartAsync 应仅限于短期任务,因为托管服务是按顺序运行的,在 StartAsync 运行完成之前不会启动其他服务。

StopAsync

BackgroundService 基类(实现长时间运行)

BackgroundService 是用于实现长时间运行的 IHostedService 的基类。

调用 ExecuteAsync(CancellationToken) 来运行后台服务。 实现返回一个 Task,其表示后台服务的整个生存期。 在 ExecuteAsync 变为异步(例如通过调用 await)之前,不会启动任何其他服务。 避免在 ExecuteAsync 中执行长时间的阻塞初始化工作。 StopAsync(CancellationToken) 中的主机块等待完成 ExecuteAsync

调用 IHostedService.StopAsync 时,将触发取消令牌。 当激发取消令牌以便正常关闭服务时,ExecuteAsync 的实现应立即完成。 否则,服务将在关闭超时后不正常关闭

 

标签:Core,ASP,服务,CancellationToken,托管,StartAsync,后台任务,StopAsync
From: https://www.cnblogs.com/friend/p/18200119

相关文章

  • net core jwt的基本原理和实现
    NETCore中的JWT(JSONWebToken)基本原理和实现主要涉及到身份验证和授权的过程。以下是对JWT原理和实现的简要概述:JWT原理JWT是一种开放标准(RFC7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。这些信息可以被验证和信任,因为它们是数......
  • 基于Azure DevOps 的 CICD 项目部署(.Net Core)
    基于AzureDevOps的CICD项目部署(.NetCore)使用微软的来进行CICD链接:https://dev.azure.com创建新项目创建项目名称选择仓库地址选择空模板创建代理池按照以下步骤把代理部署到服务器上![连接你的服务器创建新的文件夹mkdirmyange......
  • 记一次asp.net 8 服务器爆满的解决过程
    1.描述一下服务器配置:一台2c4g的centos,做api接口反代一台8c16g的windows2019作为实际服务器,跑了iis,sqlserver,mongodb,redis2.业务描述  2.0 服务器分为两个站点:importapi:用于处理数据导入,,,webapi:用于处理对用户端的数据查询  2.1从数据源采集数据后,......
  • Asp-Net-Core开发笔记:使用ActionFilterAttribute实现非侵入式的参数校验
    前言在现代应用开发中,确保API的安全性和可靠性至关重要。面向切面编程(AOP)通过将横切关注点(如验证、日志记录、异常处理)与核心业务逻辑分离,极大地提升了代码的模块化和可维护性。在ASP.NETCore中,利用ActionFilterAttribute可以方便地实现AOP的理念,能够以简洁、高效的方式进行自......
  • (报错)ROS2:WARNING:colcon.colcon_core.package_selection:ignoring unknown package
    在使用colcon编译时,如果直接对所有包编译colconbuild则不会有问题,但是针对单独某个包编译colconbuild--packages-select<pkg>则报错WARNING:colcon.colcon_core.package_selection:ignoringunknownpackagegg了一下找到了问题参考:https://unix.stackexchange.co......
  • 内网渗透 Metasploit(MSF)基础使用
    免责申明以下内容仅供学习使用,非法使用造成的问题由使用人承担攻击思路漏洞探测(信息收集)<-fsacn,namp|漏洞利用<-工具(msf等)|获取服务器权限MSF使用Metasploit就是一个安全漏洞检测工具。它的全称叫做TheMetasploitFramework,简称MSF。MSF主要用于攻击非web端口1......
  • Dapr 与 .NET Aspire
    Dapr与.NETAspire Dapr与.NETAspire结合使用获得无与伦比的本地开发体验 Dapr 提供了一组构建块,用于抽象分布式系统中常用的概念。这包括服务、缓存、工作流、复原能力、机密管理等之间的安全同步和异步通信。不必自己实现这些功能,可以消除样板,降低复杂性,并允许您......
  • ASP.NET Core Web中使用AutoMapper进行对象映射
    前言在日常开发中,我们常常需要将一个对象映射到另一个对象,这个过程中可能需要编写大量的重复性代码,如果每次都手动编写,不仅会影响开发效率,而且当项目越来越复杂、庞大的时候还容易出现错误。为了解决这个问题,对象映射库就随之而出了,这些库可以自动完成对象之间的映射,从而减少大量......
  • Dapr 与 .NET Aspire 结合使用获得无与伦比的本地开发体验
    Dapr提供了一组构建块,用于抽象分布式系统中常用的概念。这包括服务、缓存、工作流、复原能力、机密管理等之间的安全同步和异步通信。不必自己实现这些功能,可以消除样板,降低复杂性,并允许您专注于开发业务功能。在您的时间有限并且您只想进行实验的情况下,在Dapr初始设置上花费大量......
  • .NET ASPIRE 预览版 7 发布
    .NETAspire预览版7并不是原计划的一部分,此预览版有很多重大API更改,部分原因是一旦产品发布,我们将致力于稳定的API表面。可以说,Aspire团队希望确保在最终发布之前完成这些API更改。但作为开发人员,我们会喜欢能够对快速发展的开发生态系统中的变化做出快速反应。.NETAsp......