运行 后台瞬态服务 (.NET Core)

Running Transient services in background (.NET Core)

我正在尝试使用 Blazor Server 编写客户订单跟踪器。

我想做的是在后台为每个创建的新订单启动订单管理服务。该服务将跟踪与订单相关的各种实时信息,并应在订单完成后处理。

我可以通过将服务注册为:

services.AddTransient();

然后我可以将其依赖注入到剃刀组件中:

@inject OrderManagementServiceom_service

这为每个订单创建了一个新实例,这很好。问题是我不能期望用户保持页面打开以保持 Transient 服务的作用域。

根据我的观察,该实例持续到 运行,但其生命周期未明确定义。它可能会很快无限期地终止(没有足够长的时间来完成工作),或者 运行 无限期地终止(从而抢夺服务器的资源)。因为我没有参考它。

如何解决这个问题?如果瞬态服务不是解决方案,那会是什么?

谢谢!

查看 .NET Core 中的 hosted background services,听起来它可能适合您。

即使用户离开您的站点,托管的后台服务也会在您的服务器上继续 运行。您可以有一个 OrderManager 托管服务来指导每个订单完成整个过程,并在数据库中更新订单状态,通过电子邮件发送用户状态更新,或将更改推送到前端。