【发布时间】:2021-07-07 12:25:48
【问题描述】:
我有一个用于进行 API 调用的类。我想将它作为依赖项传递,我想知道使用Singleton 或Scoped 是否更好:
services.AddScoped<IHttpCallService, HttpCallService>();
or
services.AddSingleton<IHttpCallService, HttpCallService>();
我知道 Singleton 和 Scoped 在实例创建方面存在差异,
但我想知道哪一个更有效,更适合这种情况?
另外,如果我使用Singleton,是否意味着一切都会同步进行?
【问题讨论】:
-
也许这会帮助你更好地理解:Dependency injection in ASP.NET Core.
-
你说的是哪种应用程序?
-
如果您使用的是 HttpClient... 最好的方法是使用单例并使用 async/await 生成您的 cals。无论如何,HttpClient 旨在更好地工作。
-
@AlexeyRumyantsev 这是一个 asp.net 核心 Web Api 应用程序。
-
关于“这是否意味着一切都会同步工作?”:在 C# 中,没有任何类型的队列用于使用相同对象或方法的请求。如果多个线程都使用同一个单例对象,那么每个线程都有自己的栈,基本上是独立的。唯一真正共享的是单例对象上的任何字段。
标签: c# asp.net-core .net-core dependency-injection