asp.net-core - 何时使用以下瞬态、作用域和单例
问题描述
我阅读了一些关于此的文章,并且了解了如何使用 Transient、Scoped 和 Singleton,但我对何时使用其中之一感到困惑。
我的理解是:
单身人士:在您需要存储员工人数的情况下,您可以在每次创建新员工时创建单身人士,然后它会增加数量,因此在这种情况下您需要单身人士。
Scoped:例如您正在玩生命数为 5 的游戏,然后您需要在玩家游戏结束时减少生命数。并且在每一次新的时间里你都需要新的实例,因为每一次你需要的生命数是 5。
瞬态:什么时候使用瞬态?
如果我错了,请纠正我。如果可能,请给出所有这些更好的例子。
解决方案
据我所知,Singleton 通常用于全局单实例。例如,您将拥有一个图像存储服务,您可以拥有一个从给定位置加载图像并将它们保存在内存中以供将来使用的服务。
范围生命周期表示每个客户端请求创建一次服务。通常我们将它用于sql连接。这意味着它将根据请求创建和处理 sql 连接。
每次从服务容器请求它们时,都会创建一个瞬态生命周期服务。例如,在一个请求期间,您使用 httpclient 服务多次调用其他 web api 请求,但 web api 端点不同。那时您会将 httpclient 服务注册为瞬态。这意味着每次调用 httpclient 服务时,它都会创建一个新的 httpclient 来发送不同的请求。
推荐阅读
- javascript - setTimeout() & setInterval() 不能正常工作
- django - “未提供身份验证凭据。” 在 DRF 中
- arrays - 在 Golang 中使用 sjson 递归地将数组更改为 JSON 中的非数组
- c# - ASP.NET MVC & AJAX
- security - PHP 安全 - Facebook 如何阻止来自其他主机的登录?
- python - 熊猫插值:数据帧与系列
- mysql - 如何更新/重命名 MySQL 中的表行
- c++ - Emscripten 链接静态库错误:wasm 流编译失败:导入'env.getTempRet0'
- java - 为 Java 类创建了一个测试器
- java - Java-Persist 无法插入 SQL 表