
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 면접 질문