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