我应该使用 Singleton 还是 Scoped 服务在 ASP.NET Core 中进行 api 调用?

Should I use Singleton or Scoped service for making api calls in ASP.NET Core?

我有一个 class 可以拨打 API 电话。我想将它作为依赖项传递,我想知道使用 Singleton 还是 Scoped 更好:

services.AddScoped<IHttpCallService, HttpCallService>();
 or 
services.AddSingleton<IHttpCallService, HttpCallService>();

我知道Singleton和Scoped在实例创建方面有区别, 但我想知道哪个更有效并且更适合这种情况? 而且,如果我使用 Singleton,是否意味着一切都将同步工作?

推荐的模式是让您的 HttpCallService 依赖于一个 HttpClient 实例,然后将其注册为 Typed Client

services.AddHttpClient<HttpCallService>();

这会将 HttpCallService 注册为临时服务。

最好的建议是在处理 api 调用时在这种情况下使用 singleton。下面的文章解释了您不使用 HttpClient 作为 singleton

的问题是什么
services.AddSingleton<IHttpCallService, HttpCallService>();

阅读本文以获得更深入的知识 https://www.stevejgordon.co.uk/httpclient-connection-pooling-in-dotnet-core