ASP.Net HttpClient
は破棄される可能性があり、多くの記事ではパフォーマンスのためにシングルトンパターンを使用する必要があると述べていますが、RestClient
を表示すると破棄できないため、 Recommended-Usage サンプルのページnew
RestClient
問題が発生するたびにRestClient
にシングルトンパターンを使用するか、new
毎回、もし私がnew
毎回それを実行すると、パフォーマンス上の懸念はありますか?
いくつかの参照:
restClientにシングルトンパターンを使用する必要がありますか、それとも毎回新しくする必要があります。毎回新しい場合、パフォーマンスに問題はありますか?
RestSharp
の推奨される使用方法は、リクエストごとに新しいインスタンスを作成することです。
HttpClient
に推奨されるシングルトンアプローチとは異なります。そして、その理由は 内部RestSharp
がHttpWebRequest
ではなくHttpClient
をHTTP対話に使用することです。これが、使用モデルが異なる理由です。
毎回作成すると、HttpClientと同じようにパフォーマンスの問題が発生しますか?
リクエストごとにHttpClient
の新しいインスタンスを作成してはならない主な理由は、パフォーマンスに関する考慮事項ではありません。作成と初期化に費やされる時間は、次のネットワーク呼び出しに費やされる時間のほんの一部です。 HttpClient
のシングルトンインスタンスを使用する主な理由 次は :
HttpClientは、一度インスタンス化され、アプリケーションの存続期間を通じて再利用されることを目的としています。リクエストごとにHttpClientクラスをインスタンス化すると、高負荷時に使用可能なソケットの数がなくなります。これにより、SocketExceptionエラーが発生します。
RestSharp
は、接続プールをHttpClient
として使用せず、使用後にソケットを開いたままにしません。これが、リクエストごとにRestClient
の新しいインスタンスを作成することが安全(かつ推奨)な理由です。
RestClient
の再利用インスタンスを使用すると、パフォーマンスが向上しますか?さて、オブジェクトの作成とその初期化の時間を節約できます。ただし、この時間は0
に非常に近く、さらに、ネットワークコールの追跡に費やされる時間のごく一部です。パフォーマンスを考慮して、List<T>
などの他の.NETオブジェクトを再利用しませんか? RestClient
についても同じようにする必要があります。そのような使用シナリオを示唆する方法で開発されただけです。