asp.net 核心中的 HTTPClientFactory 是否像 .net Framework 中的 HttpClient 一样在请求完成后保持连接
Does the HTTPCientFactory in asp.net core keep the connection alive even after the request is completed like HttpClient in .net Framework
aspnet core 中的 HTTP 客户端工厂
- 这类似于拥有 HTTPClient 池吗?
- 客户端工厂中的客户端是否在请求完成后保持连接
- 是重用 HttpClientFactory 中的客户端还是 HttpClientFactory 为每个请求创建新的客户端?
WARNING:此答案涉及 2018 年 .NET Core 2.1 中 HttpClient
和 IHttpClientFactory
的状态。现在是 2021 年 10 月,并且有从那时起,.NET 发生了很多变化(尤其是在 .NET 5 和现在的 .NET 6 中),所以如果您阅读这篇文章,这个答案可能已经过时且不正确 post 自从我最初研究和撰写以来这是在 2018 年。
我发现这篇文章可以回答您的问题(强调我的问题):
https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore
The expensive part of using HttpClient
is actually creating the HttpClientHandler
and the connection. Having these pooled in this manner means we can get more efficient use of the connections on our system. When you use the HttpClientFactory
to request a HttpClient
, you do in fact get a new instance each time, which means we don’t have to worry about mutating its state. This HttpClient
may (or may not) use an existing HttpClientHandler
from the pool and therefore use an existing open connection.
- 它有自己的处理程序和池。
- 不,它已返回池中,而且是免费的。
- 客户端被重用,但在不同的池中。
aspnet core 中的 HTTP 客户端工厂
- 这类似于拥有 HTTPClient 池吗?
- 客户端工厂中的客户端是否在请求完成后保持连接
- 是重用 HttpClientFactory 中的客户端还是 HttpClientFactory 为每个请求创建新的客户端?
WARNING:此答案涉及 2018 年 .NET Core 2.1 中 HttpClient
和 IHttpClientFactory
的状态。现在是 2021 年 10 月,并且有从那时起,.NET 发生了很多变化(尤其是在 .NET 5 和现在的 .NET 6 中),所以如果您阅读这篇文章,这个答案可能已经过时且不正确 post 自从我最初研究和撰写以来这是在 2018 年。
我发现这篇文章可以回答您的问题(强调我的问题):
https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore
The expensive part of using
HttpClient
is actually creating theHttpClientHandler
and the connection. Having these pooled in this manner means we can get more efficient use of the connections on our system. When you use theHttpClientFactory
to request aHttpClient
, you do in fact get a new instance each time, which means we don’t have to worry about mutating its state. ThisHttpClient
may (or may not) use an existingHttpClientHandler
from the pool and therefore use an existing open connection.
- 它有自己的处理程序和池。
- 不,它已返回池中,而且是免费的。
- 客户端被重用,但在不同的池中。