何时使用以下瞬态、范围和单例

问题描述

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

我的理解:

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

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

瞬态:何时使用瞬态??

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

解决方法

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

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

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