RestClient应该是每个请求的单例还是新单元

时间:2018-03-31 13:18:34

标签: c# asp.net restsharp

ASP.Net HttpClient可以处理,很多文章说你应该使用单例模式来使用它,因为性能但是当我看到RestClient它无法处理时new页面示例将RestClient RestClient每次我的问题应该使用new的单一模式,或者我应该每次都new,如果我{ {1}}每次都会出现性能问题吗?

Recommended-Usage

一些参考文献:

RestSharp GitHub

Do HttpClient and HttpClientHandler have to be disposed

1 个答案:

答案 0 :(得分:19)

  

我应该为RestClient使用单例模式还是应该重新创建它   每次,如果我每次都对它有任何性能问题吗?

使用RestSharp的推荐方法是为每个请求创建一个新实例。

它与HttpClient推荐的单身方法不同。原因是under the hood RestSharp使用HttpWebRequest进行HTTP互动,而非HttpClient。这就是使用模式不同的原因。

  

如果我每次创建它,我都会遇到性能问题   HttpClient的?

您不应为每个请求创建HttpClient的新实例的主要原因不是性能考虑因素。创建和初始化所花费的时间将花费很少一部分时间用于跟随网络呼叫。使用HttpClient is the following的单例实例的主要原因:

  

HttpClient旨在实例化一次并在整个过程中重复使用   申请的生命。实例化HttpClient类   每个请求都会耗尽重量下的插座数量   负载。这将导致SocketException错误。

RestSharp不使用连接池作为HttpClient,并且在使用后不会保留打开的套接字。这就是为什么每个请求创建RestClient的新实例是安全的(并推荐)。

如果您使用RestClient的重用实例,您是否会获得任何性能提升?那么,您将节省创建对象及其初始化的时间。然而,这个时间非常接近0,而且它只是花费一小部分时间来跟随网络呼叫。由于性能方面的考虑,您不会重用其他.NET对象,如List<T>,是吗?你应该为RestClient做同样的事情。它只是以一种暗示这种使用场景的方式开发。