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

2024-01-15

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

我的理解是:

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

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

短暂的:什么时候使用瞬态?

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


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时使用以下瞬态、作用域和单例 的相关文章

随机推荐

  • ASP.NET MVC 3 远程验证以允许原始值

    我的用户模型的电子邮件属性上有一个远程属性 当我创建新用户时 它会创建并告诉用户电子邮件已在使用中 现在我的编辑表单遇到问题 如果用户想要更新值 它告诉用户他 她的电子邮件已在使用中 当正在使用的电子邮件是用户注册的电子邮件时 我不希望它给
  • 奇怪的段错误,可能与 realloc 有关

    char dumpTB TB tb char text malloc sizeof char int i 0 int x 0 string index tNode curr tb gt head while curr NULL while
  • 何时使用 Task.Run().GetAwaiter().GetResult() 和 ().GetAwaiter.GetResult()? [复制]

    这个问题在这里已经有答案了 我有一个需要同步调用的异步任务 是的 不幸的是 这是不可避免的 似乎有两种方法可以实现这一点 每种方法似乎都有效 所以我不确定哪种方法是最好的方法 或者是否有更好的方法 例如 var meetings Task
  • Pig 本地模式、组或 join = java.lang.OutOfMemoryError: Java 堆空间

    Using Apache Pig 版本 0 10 1 21 报道 CentOS 版本 6 3 最终版 jdk1 6 0 31 Virtualbox 上的 Hortonworks Sandbox v1 2 具有 3 5 GB RAM cat
  • OCaml 中的函子

    我在函子 及其结果类型 方面遇到了一些问题 下面 我有一个Set使用一个函子Ordered类型 我实际上使用了set mlOCaml 附带提供一些指导 但我似乎正在做所有事情ahem正确的 我创建了一个Ordered模块与整数并将其应用到S
  • VBA:为什么人们在“Next”语句中包含变量的名称?

    我总是这样写我的 For 循环 For foo 1 to 10 do something Next 然而 当我在网上阅读代码片段时 人们总是这样做 For foo 1 to 10 do something Next foo 我没有注意到两者
  • SSIS 脚本编辑器加载速度非常慢

    在我的角色中 我偶尔会使用 SSIS 在我最新的包中 我使用了脚本任务 我的机器速度足够快 运行 64 位并且有大量内存 但每当我尝试编辑脚本时 我必须等待近一分钟才能加载代码 我正在使用 VS 2012 和 SQL 2012 任何想法 不
  • 在 Redshift 外部表中引用转义引号

    我正在尝试从 csv 中创建一个 Redshift 外部表 其中包含转义引号 如中所述rfc4180 https www rfc editor org rfc rfc4180 如果使用双引号将字段括起来 则使用双引号 出现在字段内的内容必须
  • Python - sys.stderr 未保存到 .txt 或 .log

    我正在检查标准流的工作情况 目前我正在使用stderr使用Python 为了解释清楚 以下是我的代码 print Python testt 当我运行代码时 我得到以下信息 Python Traceback most recent call
  • 如何将 ASP.NET Core 应用程序发布到 ftp 服务器

    Visual Studio发布仅支持导入Web部署 有解决方法吗 Visual Studio 发布配置文件支持纯 FTP 作为目标 但它不支持 SFTP 您应该看到以下选项 网络部署 网络部署包 FTP 不幸的是不支持SFTP 文件系统 U
  • 静态常量变量在子类中不是常量

    我使用的是 Visual Studio 2008 有两个类 Parent 和 Child Parent在头文件中声明了一些静态const变量 然后在cpp文件中定义这些变量 当我尝试在子类的 switch 语句中使用定义作为 case 时
  • Visual Studio 2012 条件捆绑

    我刚刚开始使用 VS 2012 RC 我创建了一个带有母版页和单个 Web 表单的测试站点 目前 我正在使用此代码来捆绑整个Styles网站上的文件夹 全局 asax BundleTable Bundles EnableDefaultBun
  • 如何使用 CoffeeScript 存在运算符来检查某些对象属性是否未定义?

    我想使用 CoffeeScript 存在运算符来检查某些对象属性是否未定义 然而 我遇到了一个小问题 代码如下 console log test if test 编译为 if typeof test undefined test null
  • 为什么C#不允许运算符重载?

    为什么 C 不允许运算符重载 而 C 却允许 尝试超载时出现此错误 预期可重载二元运算符 我的示例代码看起来像 public static MyClass operator MyClass obj1 MyClass obj2 您可以在 C
  • 在 rmarkdown html 输出中添加 X-UA-Compatible

    我正在尝试添加以下标签 as the first一后
  • 如何在动画之后将更改应用到视图位置?

    我将 TranslateAnimation 应用于带有 FillAfter true 的 EditText 以保持其在动画末尾的位置 动画工作正常 但问题是我无法再输入编辑文本 我认为这是因为动画仅影响渲染而不修改实际的视图坐标 是否有可能
  • 删除Linux上的终端输出

    我正在编写一个命令行程序 它将有一个状态栏 很像 wget 我面临的主要问题是 如何删除已经发送到 stdout stderr 的内容 我有一个想法 使用退格字符 b 并删除我发送的输出 这是最好的方法吗 这是唯一的方法吗 有没有更好的办法
  • 在 Objective-c 中,如何创建一个可供所有子类访问但不能公开访问的方法

    假设我创建了一个 viewController 然后我想创建另一个类似于第一个视图控制器 看起来像是一份继承的工作 然而 原始ViewController的许多任务都是私有方法 我想最小化公共接口 如果我将这些方法声明为公开的话 那么就达不
  • 如何在 QML 中设计多层流体布局

    我在 QML 中设计了一个布局 以了解有关其功能的更多信息 并对设计此类布局的 最佳实践 有一些疑问 这里是 它本质上是一个列布局由三个组成行布局s 每一个都有一些长方形s 每行和矩形的大小应计算如下 First row Height 40
  • 何时使用以下瞬态、作用域和单例

    我读了一些关于此的文章 并且了解了如何使用 Transient Scoped 和 Singleton 但我很困惑何时使用其中之一 我的理解是 辛格尔顿 在需要存储员工数量的情况下 您可以创建单例 因为每次创建新员工时 它都会增加数量 因此在