使用与websockets相关的编码,我发现目前还不清楚,如何正确处理长时间运行的后台进程或通过即发即弃语义执行的任务(这仍然是正确的min_alpha
)因为DI范围,应用程序重启等可能存在一些缺陷。
因此,如果没有像ASP.NET Core 2.0
.NET Core
世界中需要如何实现这类事情,这将是一件好事。
答案 0 :(得分:1)
可能值得查看IHostedService
和BackgroundService
类的MSDN开发者博客:
<强>要点:强>
IHostedService
界面提供了一种便捷的启动方式 ASP.NET Core Web应用程序中的后台任务(在.NET Core 2.0中) 或者在任何进程/主机中(从带有IHost
的.NET Core 2.1开始)。它的 主要好处是优雅取消的机会 在主机本身时清理后台任务的代码 关闭。
答案 1 :(得分:0)
我正在研究这几天。我在这里有一个类似的问题:
Asp.Net Core 2.0: Simple way to execute long running tasks and report progress
我找到了一种使用 QueueBackgroundWorkItem 的方法,但这在Asp.Net Core中不可用。
我发现在人们的答案中我唯一能够保持一致的是,在“IIS”之外需要进行“即发即忘”。在 Windows服务或类似 Azure Web作业。
中让您免于实施分布式架构的唯一简单方法是 Hangfire ,但对于关键操作似乎是不推荐的。