
HttpClient & ネットワーキング
HttpClient、HttpClientFactory、request/response、エラー処理、retry policies、async パターン
1HttpClient を直接インスタンス化する代わりに IHttpClientFactory を使うのはなぜですか?
HttpClient を直接インスタンス化する代わりに IHttpClientFactory を使うのはなぜですか?
回答
IHttpClientFactory は HttpClient インスタンスのライフサイクルを自動的に管理し、socket exhaustion を防ぎます。using 文で HttpClient を直接インスタンス化すると、disposal 後も開いたままになる TIME_WAIT 状態の接続の問題が発生する可能性があります。IHttpClientFactory を使うことで、Polly によるレジリエンスポリシーの設定や接続プーリングの効率的な管理も可能になります。
2Named Client と Typed Client の主な違いは何ですか?
Named Client と Typed Client の主な違いは何ですか?
回答
Typed Client は HTTP 呼び出しのロジックを依存性注入を伴う専用クラスにカプセル化しますが、Named Client は IHttpClientFactory.CreateClient(name) を介して取得されます。Typed Client は関心の分離が優れており、設定とビジネスロジックをカプセル化することで単体テストを容易にします。Named Client は、複雑なビジネスロジックを必要とせず、複数の異なる設定が必要な単純なケースに役立ちます。
3アプリケーション内のすべての HttpClient インスタンスにグローバルなタイムアウトを設定するにはどうすればよいですか?
アプリケーション内のすべての HttpClient インスタンスにグローバルなタイムアウトを設定するにはどうすればよいですか?
回答
ConfigurePrimaryHttpMessageHandler を介してタイムアウトを設定すると、factory が作成するすべてのクライアントに適用される handler レベルのタイムアウトを定義できます。このアプローチは設定を一元化し、コードの重複を回避します。各 HttpClient に個別にタイムアウトを設定することも可能ですが、複数のクライアントを設定する大規模なアプリケーションでは保守が困難になります。
HTTP レスポンスのボディを文字列として読み取れるメソッドはどれですか?
HttpClient のパイプラインにおける DelegatingHandler の役割は何ですか?
+17 面接問題