在ASP.NET核心世界中使用本地/规范方法来实现Fire-and-forget

Ph0*_*n1x 8 c# asp.net-core-mvc .net-core asp.net-core

使用与websockets相关的一些编码,我发现目前还不清楚,如何正确处理长时间运行的后台进程或通过即发即弃语义执行的任务(这仍然是正确的ASP.NET Core 2.0)因为DI可能存在一些陷阱范围,应用程序重启等

因此,.NET Core如果没有花哨的东西,这样的事情需要在世界上实现,这将是一个很好的理由Hangfire

Cal*_*alC 6

可能值得查看这个 MSDN 开发人员博客IHostedServiceBackgroundService课程:

概括:

IHostedService接口提供了一种在 ASP.NET Core Web 应用程序(在 .NET Core 2.0 中)或任何进程/主机(在 .NET Core 2.1 中从 .NET Core 2.1 开始)中启动后台任务的便捷方法IHost。它的主要好处是,当主机本身关闭时,您有机会优雅地取消后台任务以清理代码。


Ph0*_*n1x 0

看起来这对于 dotnet 团队来说是一个非常常见的问题。所以他们最终写了一个文档来解释如何基于IHostedService接口来实现这一点。因此,自 .NET Core 2.0 起,本文描述了实现此目的的正确方法。

ASP.NET Core 中托管服务的后台任务


我使用基于队列和队列侦听器的建议方法重写了自己的代码。在许多情况下,它确实与本文中提出的示例非常相似,但是,如果有很多人感兴趣,我可以将我的解决方案提取到 GitHub 并部署为 NuGet 包。