我有一个C#库,它使用HttpClient调用一个宁静的Web服务。
类库在MVC应用程序中使用,该应用程序可以运行数周而无需重新启动。
单例是一个创建HttpClient的好方法,所以我只有一个HttpClient可以在MVC应用程序的很长时间内使用它吗?
答案 0 :(得分:0)
我是单身人士会在应用程序的生命周期内保留HttpClient
,但我会问你为什么要这样做。这不是好习惯。
HttpClient
实现了IDisposable
,真的应该在你使用它之后处理它。使用声明是一种简单的方法:
using (var client = new HttpClient())
{
// Do something
}
通过这种方式,您可以确保在不需要资源时清理所有资源。实例化新的HttpClient
并不是特别昂贵,因此不会影响应用程序的性能。
答案 1 :(得分:0)
请查看Is HttpClient safe to use concurrently?
Here是Henrik F. Nielsen关于HttpClient的另一篇文章,他说:
"默认的HttpClient是您开始发送请求的最简单方式。单个HttpClient可用于同时发送任意数量的HTTP请求,因此在许多情况下,您只需创建一个HttpClient,然后将其用于所有请求。"
因此,如果要使用异步方法,可以使用带有HttpClient的单例,例如:
CancelPendingRequests
DeleteAsync
GetAsync
GetByteArrayAsync
GetStreamAsync
GetStringAsync
PostAsync
PutAsync
SendAsync
快速摘要: