我应该使用 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
我有一个 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