首页 > 解决方案 > 何时使用以下瞬态、作用域和单例

问题描述

我阅读了一些关于此的文章,并且了解了如何使用 Transient、Scoped 和 Singleton,但我对何时使用其中之一感到困惑。

我的理解是:

单身人士:在您需要存储员工人数的情况下,您可以在每次创建新员工时创建单身人士,然后它会增加数量,因此在这种情况下您需要单身人士。

Scoped:例如您正在玩生命数为 5 的游戏,然后您需要在玩家游戏结束时减少生命数。并且在每一次新的时间里你都需要新的实例,因为每一次你需要的生命数是 5。

瞬态:什么时候使用瞬态?

如果我错了,请纠正我。如果可能,请给出所有这些更好的例子。

标签: asp.net-coredependency-injectionsingletontransientscoped

解决方案


据我所知,Singleton 通常用于全局单实例。例如,您将拥有一个图像存储服务,您可以拥有一个从给定位置加载图像并将它们保存在内存中以供将来使用的服务。

范围生命周期表示每个客户端请求创建一次服务。通常我们将它用于sql连接。这意味着它将根据请求创建和处理 sql 连接。

每次从服务容器请求它们时,都会创建一个瞬态生命周期服务。例如,在一个请求期间,您使用 httpclient 服务多次调用其他 web api 请求,但 web api 端点不同。那时您会将 httpclient 服务注册为瞬态。这意味着每次调用 httpclient 服务时,它都会创建一个新的 httpclient 来发送不同的请求。


推荐阅读