何时使用以下瞬态、作用域和单例

ARJ*_*TEL 4 singleton dependency-injection transient asp.net-core scoped

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

我的理解是:

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

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

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

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

Bra*_*ang 16

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

限定范围的生命周期表示服务根据客户端请求创建一次。通常我们会用它来进行sql连接。这意味着它将创建并处置每个请求的 sql 连接。

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