- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么我应该为我的存储库或服务使用 AddScoped()
?为什么不是 AddSingleton()
?我知道它们之间的区别,但不明白为什么我不应该使用单例实例来避免为每个请求创建新对象。你能解释一下吗(最好有例子:))?
最佳答案
如您所说,您知道其中的区别,所以我不会深入讨论。
您不想为您的存储库或服务添加 Singleton 的原因是因为通常您的存储库和服务被视为“业务逻辑”和“持久性逻辑”。在您的业务逻辑中,您可能有一些正在设置的类级别变量。这些属性对于每个请求都不会不同,它们将在请求之间共享。 (将它们想象成静态属性)。
例子:
假设您有一个用户服务,它将发出请求的用户的用户名设置为类级别变量。
单例逻辑:
现在假设 Bob 向 API 发出请求。用户名将设置为 "Bob"。现在想象一下,约翰同时向 API 发出请求。用户名将设置为“John”。但是因为用户服务是单例的,John 和 Bob 共享同一个实例,这意味着 Bob 的用户名也将设置为“John”。
作用域逻辑:
想象一下与上面完全相同的场景,但是这次当 John 发出请求时,它不会覆盖 bobs 用户名,因为它们是不同的实例。
关于c# - 为什么使用 AddScoped() 而不是 AddSingleton()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72224682/
我已经创建了一个接口(interface) public interface ICurrentUser { Task Set(UserAuth user); User Get(); }
我正在尝试同时学习 asp.net core (3.1) 和 clean architecture。我用作基础的 GitHub 存储库是 https://github.com/ivanpaulovic
为什么我应该为我的存储库或服务使用 AddScoped()?为什么不是 AddSingleton()?我知道它们之间的区别,但不明白为什么我不应该使用单例实例来避免为每个请求创建新对象。你能解释一下吗
为什么我应该为我的存储库或服务使用 AddScoped()?为什么不是 AddSingleton()?我知道它们之间的区别,但不明白为什么我不应该使用单例实例来避免为每个请求创建新对象。你能解释一下吗
在 IServiceCollection 上,提供的注册服务 AddTransiet、AddScoped、AddSingleton 的方法不允许您在必须通过计算其某些步骤来检索服务时使用 async-
我想实现 dependency injection ASP.NET Core 中的 (DI)。因此,将此代码添加到 ConfigureServices 方法后,两种方式都有效。 ASP.NET Cor
在 asp.net 核心应用程序中,我有一个依赖注入(inject)缓存服务,它本质上是内置 MemoryCache 的包装器。 这是被缓存的示例类,它包含 Web 应用程序始终使用的一些枚举的列表:
假设我想在将作为 Azure Web 作业运行的控制台应用程序中使用依赖注入(inject)。这样做我正在重用我在相关的 Asp.net 应用程序上使用的名为“AddATonOfServices()”
我试图了解 AddSingleton、AddScoped 和 AddTransient 之间的区别。有很多解释,但我看不懂,因为我不明白什么时候HTTP请求在同一个范围内 最佳答案 因此,在 AppD
长话短说 在 .NET 6 中: 类型化的生命周期是多少 HttpClient来自 IHttpClientFactory 的实例将接收它的类型在哪里注册为“Scoped”? 当我们像下面的摘录那样注册
假设我想实现不同的 DbContext(MySql、MsSql),但让应用程序完全不知道它。 因此,使用“AddScoped”(或任何其他)方法,我可以注册以下内容: 或者甚至将它们隐藏在工厂后面
在以下代码中(来自 https://github.com/JasonGT/NorthwindTraders/blob/master/Src/WebUI/Controllers/BaseControll
我一直在使用 asp.net 核心依赖注入(inject),我看到了一个意想不到的行为,至少对我来说是这样。我正在向容器中添加一个新服务,如下所示: services.AddScoped(provid
我想将一个值从请求的 header 分配给每个请求作为单例的类实例。 我想在 ConfigureServices 中用 .net core 分配它Startup 中的方法类(class)。 像这样的东
我的项目中有一个通用存储库。考虑以下 Controller 片段 public class Lookup1Controller : Controller { readonly MyDbCont
我正在使用 StackExchange.Redis 添加到 .NET Core 的 Redis 连接,它目前看起来像这样: public static IServiceCollection AddRe
我是一名优秀的程序员,十分优秀!