65

HttpClientFactoryクラスの目的は何なのか気になります。MSDN に存在する理由についての説明はありません (リンクを参照)。

Createより特殊な引数を持つメソッドもありますが、ほとんどの場合、パラメーターなしの呼び出しと通常のコンストラクターの違いは何だろうと思います。


var httpClient = HttpClientFactory.Create();

VS

var httpClient = new HttpClient();

ほとんどの例では、クラスが から派生しているにもかかわらず、ステートメントnew HttpClient()なしで が使用されています。usingHttpClientIDisposable

HttpClientクラスは から派生しているためIDisposable、ファクトリによってプーリングまたはキャッシングが行われますか? パフォーマンス上の利点はありますか、それとも問題ではありませんか?

更新 – .NET Core 2.1 の <code>IHttpClientFactory

この質問がされてから、新しいバージョンの .NET がリリースされ、.NET Core 2.1 では HTTP クライアントを取得するための新しく大幅に改善されたアプローチが導入されたことに注意してください。

IHttpClientFactory代わりに .NET Coreを使用する場合は、以下の Ali Bayat の回答を参照してください。

ただし、これは、この質問が求められた v4.8 までの .NET Framework での使用に対する正しい答えであるため、Darrel Miller の答えを受け入れられた答えとして保持しています。

.NET 5 では、.NET Framework と .NET Core の間の不一致が調整されるため、IHttpClientFactory代わりに使用する必要があります。

4

4 に答える 4

0

@DarrelMillerの答えに追加させてください:

スケーリングが重要な場合は、HttpClient インスタンスの有効期間に注意を払う必要があります。WebAPI クライアントで呼び出しごとに新しい HttpClient を作成するオーバーヘッドは何ですか? を参照してください。

于 2017-07-06T20:30:39.810 に答える