ASP.Net HttpClient
可以处理,很多文章说你应该使用单例模式来使用它,因为性能但是当我看到RestClient
它无法处理时new
页面示例将RestClient
RestClient
每次我的问题应该使用new
的单一模式,或者我应该每次都new
,如果我{ {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
做同样的事情。它只是以一种暗示这种使用场景的方式开发。