.net-core - HttpClient 注入单例
问题描述
我目前正在使用 TypedClient,只是想更好地理解单例的问题以及 HttpClientFactory 的工作原理。
在阅读了Steve Gordon的文章后,我只想确保我正确理解了这一点并使用了正确的方法。
我有一个使用services.AddHttpClient<MyClient>
.
public class MyClient
{
private HttpClient _client;
public MyClient(HttpClient client)
{
_client = client;
}
}
我还有一个后台服务,它是一个单例,使用注册services.AddSingleton<IMyBackgroundService, MyBackgroundService>()
public class MyBackgroundService : IMyBackgroundService
{
private MyClient _myClient;
public MyBackgroundService(MyClient myClient)
{
_myClient = myClient;
}
}
_myClient
在单例中的实例MyBackgroundService
在实践中是否也不仅仅是单例?
如果我有一个名为的后台方法,在其中创建一个范围然后注入并请求一个实例DoJob
不是更好吗?DoJob
HttpClientFactory
MyClient
谢谢。
解决方案
我的理解是,您MyBackgroundService
不应该是单例,而是范围。
我认为要么就是这样,要么MyClient
直接将你的注入控制器,否则正如你所说,实例MyClient
将成为单例。
推荐阅读
- javascript - 有什么区别,什么更好用:工厂函数与构造函数。请推理您的方法,以便我学习
- flutter - 无法从 sharedPrefrence 中获取数据列表
- java - 以最佳方式处理 api 响应
- typescript - Rollupjs 不会捆绑所有文件
- html - 如何设置输入类型=“范围”的样式
- c - 如何在两个远程主机上运行 UDP 客户端和服务器(用 C 语言)?
- ruby - 如何解决无法加载此类文件 openssl 错误?
- selenium - 页面刷新后要求逻辑避免“StaleElementReferenceException”
- symfony - Symfony Form CollectionType 数组验证
- latex - 为什么在背面我错过了表格中的垂直边缘?