运行 后台瞬态服务 (.NET Core)
Running Transient services in background (.NET Core)
我正在尝试使用 Blazor Server 编写客户订单跟踪器。
我想做的是在后台为每个创建的新订单启动订单管理服务。该服务将跟踪与订单相关的各种实时信息,并应在订单完成后处理。
我可以通过将服务注册为:
services.AddTransient();
然后我可以将其依赖注入到剃刀组件中:
@inject OrderManagementServiceom_service
这为每个订单创建了一个新实例,这很好。问题是我不能期望用户保持页面打开以保持 Transient 服务的作用域。
根据我的观察,该实例持续到 运行,但其生命周期未明确定义。它可能会很快无限期地终止(没有足够长的时间来完成工作),或者 运行 无限期地终止(从而抢夺服务器的资源)。因为我没有参考它。
如何解决这个问题?如果瞬态服务不是解决方案,那会是什么?
谢谢!
查看 .NET Core 中的 hosted background services,听起来它可能适合您。
即使用户离开您的站点,托管的后台服务也会在您的服务器上继续 运行。您可以有一个 OrderManager
托管服务来指导每个订单完成整个过程,并在数据库中更新订单状态,通过电子邮件发送用户状态更新,或将更改推送到前端。
我正在尝试使用 Blazor Server 编写客户订单跟踪器。
我想做的是在后台为每个创建的新订单启动订单管理服务。该服务将跟踪与订单相关的各种实时信息,并应在订单完成后处理。
我可以通过将服务注册为:
services.AddTransient();
然后我可以将其依赖注入到剃刀组件中:
@inject OrderManagementServiceom_service
这为每个订单创建了一个新实例,这很好。问题是我不能期望用户保持页面打开以保持 Transient 服务的作用域。
根据我的观察,该实例持续到 运行,但其生命周期未明确定义。它可能会很快无限期地终止(没有足够长的时间来完成工作),或者 运行 无限期地终止(从而抢夺服务器的资源)。因为我没有参考它。
如何解决这个问题?如果瞬态服务不是解决方案,那会是什么?
谢谢!
查看 .NET Core 中的 hosted background services,听起来它可能适合您。
即使用户离开您的站点,托管的后台服务也会在您的服务器上继续 运行。您可以有一个 OrderManager
托管服务来指导每个订单完成整个过程,并在数据库中更新订单状态,通过电子邮件发送用户状态更新,或将更改推送到前端。