C# 我应该使用单例服务还是作用域服务在ASP.NET核心中进行api调用?
我有一个进行API调用的类。我想将其作为依赖项传递,我想知道是否最好使用C# 我应该使用单例服务还是作用域服务在ASP.NET核心中进行api调用?,c#,asp.net-core,.net-core,dependency-injection,C#,Asp.net Core,.net Core,Dependency Injection,我有一个进行API调用的类。我想将其作为依赖项传递,我想知道是否最好使用单例或范围: services.AddScoped<IHttpCallService, HttpCallService>(); or services.AddSingleton<IHttpCallService, HttpCallService>(); services.addScope(); 或 services.AddSingleton(); 我知道Singleton和Scoped在实例创
单例
或范围
:
services.AddScoped<IHttpCallService, HttpCallService>();
or
services.AddSingleton<IHttpCallService, HttpCallService>();
services.addScope();
或
services.AddSingleton();
我知道Singleton和Scoped在实例创建方面存在差异,
但我想知道哪一个更有效,更适合这种情况?
另外,如果我使用
Singleton
,这是否意味着一切都将同步工作?建议的模式是让您的HttpCallService
依赖于HttpClient
实例,然后将其注册为
services.AddHttpClient();
这将把
HttpCallService
注册为临时服务。建议的模式是让您的HttpCallService
依赖于HttpClient
实例,然后将其注册为
services.AddHttpClient();
这将把
HttpCallService
注册为临时服务。最好的建议是在处理api调用时,在此场景中使用singleton
。下面的文章解释了您不使用HttpClient
作为singleton
services.AddSingleton<IHttpCallService, HttpCallService>();
services.AddSingleton();
阅读这篇文章,了解更多关于这方面的深入知识
最好的建议是在处理api调用时在此场景中使用
单例。下面的文章解释了您不使用HttpClient
作为singleton
services.AddSingleton<IHttpCallService, HttpCallService>();
services.AddSingleton();
阅读这篇文章,了解更多关于这方面的深入知识
这可能会帮助您更好地理解:。您在谈论什么样的应用程序?如果您使用的是HttpClient。。。最好的方法是使用单例并使用async/await创建CAL。HttpClient旨在以这种方式更好地工作。@AlexeyRumyantsev这是一个asp.net核心web Api应用程序。关于“这是否意味着所有内容都将同步工作?”:在C中,对于使用相同对象或方法的请求,没有任何类型的队列。如果多个线程都使用同一个singleton对象,那么每个线程都有自己的堆栈,并且基本上是独立的。唯一真正共享的是singleton对象上的任何字段。这可能会帮助您更好地理解:。您在谈论什么类型的应用程序?如果您使用的是HttpClient。。。最好的方法是使用单例并使用async/await创建CAL。HttpClient旨在以这种方式更好地工作。@AlexeyRumyantsev这是一个asp.net核心web Api应用程序。关于“这是否意味着所有内容都将同步工作?”:在C中,对于使用相同对象或方法的请求,没有任何类型的队列。如果多个线程都使用同一个singleton对象,那么每个线程都有自己的堆栈,并且基本上是独立的。唯一真正共享的是singleton对象上的任何字段。