Bar*_*jen 27 .net dotnet-httpclient
我很好奇这HttpClientFactory
堂课的目的是什么.没有描述MSDN上存在的原因(参见链接).
有些Create
方法有更专业的参数,但大多数我不知道没有参数的调用和普通的构造函数之间有什么区别.
var httpClient = HttpClientFactory.Create();
Run Code Online (Sandbox Code Playgroud)
VS
var httpClient = new HttpClient();
Run Code Online (Sandbox Code Playgroud)
在大多数示例中,我看到使用了new HttpClient()
,没有任何using
语句,即使HttpClient
该类派生自IDisposable
.
由于HttpClient
该类源自IDisposable
,工厂是否有一些池化或缓存?是否有性能优势,或者无关紧要?
Dar*_*ler 40
当管道中有多个DelegatingHandler时,工厂是帮助创建客户端的辅助方法.委托处理程序需要连接在一起以形成管道.这个工厂允许你将处理程序作为一个数组传递,工厂将把它们连接在一起.
我相信,并且不要相信我的话,可以在服务器端使用CreatePipeline方法来构建Web API HttpServer的消息处理管道.
我很高兴你没有看到很多关于在HTTPClient周围使用块的例子,因为我一直在与这种做法作斗争,感觉就像岁月一样.尽管HttpClient确实实现了一次性,但它只能处理在请求正在进行时被破坏的异常情况.HttpClient实例应该是长寿的.处置它们强制关闭应该被池化的底层TCP连接.HttpClient是线程安全的,可以通过不同的线程安全地使用多次.这就是如何使用,而不是单独使用,使用我经常看到的块模式.
Ali*_*yat 21
IHttpClientFactory
提供以下好处:
HttpClient
实例。HttpClient
。正如中提到的
这
默认构造函数
HttpClient
存在套接字耗尽和 DNS 更改问题,这些问题已通过IHttpClientFactory
. 它还提供了用于增加应用程序弹性的扩展。
归档时间: |
|
查看次数: |
18694 次 |
最近记录: |