单例是实例化HttpClient的好方法 [英] Is a singleton a good way of instantiating a HttpClient

查看:676
本文介绍了单例是实例化HttpClient的好方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个C#库,该库使用HttpClient调用宁静的Web服务.

I have a C# library that makes calls to a restful web service using a HttpClient.

该类库在MVC应用程序内部使用,该应用程序可以运行数周而无需重新启动.

The class library is used inside an MVC application that could run for weeks without being restarted.

单例是创建HttpClient的好方法,因此对于MVC应用程序的超长寿命来说,我只有一个HttpClient?

Is a singleton a good way of creating the HttpClient so I have just one HttpClient for the very long life of the MVC application?

推荐答案

请查看 HttpClient可以安全地同时使用吗?

此处是Henrik F. Nielsen关于HttpClient的另一篇文章,他说:

Here is another article from Henrik F. Nielsen about HttpClient where he says:

默认HttpClient是开始发送请求的最简单方法.单个HttpClient可用于同时发送任意数量的HTTP请求,因此在许多情况下,您只需创建一个HttpClient,然后将其用于您所有的请求."

"The default HttpClient is the simplest way in which you can start sending requests. A single HttpClient can be used to send as many HTTP requests as you want concurrently so in many scenarios you can just create one HttpClient and then use that for all your requests."

因此,如果您要使用异步方法,则可以将HttpClient与singleton一起使用,例如:

So you can use a singleton with HttpClient if you will use asynchronous methods, like:

CancelPendingRequests
DeleteAsync
GetAsync
GetByteArrayAsync
GetStreamAsync
GetStringAsync
PostAsync
PutAsync
SendAsync

快速摘要:

  • 如果您有相关的请求(或彼此不会相互依赖),则使用相同的HttpClient很有意义.
  • 通常,我建议尽可能重用HttpClient实例.

这篇关于单例是实例化HttpClient的好方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆