RestClient를 싱글톤으로 하거나 모든 요청에 대해 새 인스턴스를 생성해야 합니다.
ASP.NetHttpClient
일회용이며, 성능 때문에 싱글톤 패턴을 사용해야 한다는 기사가 많습니다.하지만 제가 봤을 때는RestClient
폐기할 수 없으며, Recommended-Usage 페이지에서 샘플은new
그RestClient
매회다음을 위해 싱글톤 패턴을 사용해야 합니까?RestClient
아니면 제가new
매번?내가 만약에new
매번 성능 문제가 발생합니까?
일부 참조:
HttpClient 및 HttpClientHandler를 폐기해야 합니까?
당신은 HTTPCLIENT를 잘못 사용하고 있고 그것은 DESTAB입니다.소프트웨어 활용
Restclient 버전 < 107:
RestClient에 싱글톤 패턴을 사용해야 합니까? 아니면 매번 새로 만들어야 합니까? 매번 새로 만들면 성능에 문제가 있습니까?
권장 사용 방법RestSharp
요청당 새 인스턴스를 만드는 것입니다.
권장되는 싱글턴 접근 방식과는 다릅니다.HttpClient
그리고 그 이유는 후드 아래에 RestSharp
사용하다HttpWebRequest
HTTP 상호 작용의 경우, 그렇지 않습니다.HttpClient
이것이 바로 사용 모델이 다른 이유입니다.
매번 생성하면 HttpClient와 마찬가지로 성능 문제가 발생합니까?
의 새 인스턴스를 생성하면 안 되는 주요 이유HttpClient
각 요청은 성능 고려 사항이 아닙니다.생성 및 초기화에 소요되는 시간은 다음 네트워크 호출에 소요되는 시간의 극히 일부에 불과합니다.의 싱글톤 인스턴스를 사용하는 주요 이유HttpClient
는 다음과 같습니다.
HttpClient는 한 번 인스턴스화되고 응용 프로그램의 수명 동안 재사용됩니다.모든 요청에 대해 HttpClient 클래스를 인스턴스화하면 무거운 부하가 발생할 때 사용 가능한 소켓 수가 소진됩니다.그러면 SocketException 오류가 발생합니다.
RestSharp
연결 풀을 다음과 같이 사용하지 않습니다.HttpClient
사용 후 소켓을 열어 두지 않습니다.따라서 새 인스턴스를 생성하는 것이 안전합니다(권장).RestClient
요구에 따라
의 재사용 인스턴스를 사용하면 성능이 향상됩니까?RestClient
개체 생성 및 초기화 시간을 절약할 수 있습니다.하지만 이 시간은 매우 가깝습니다.0
게다가 네트워크 통화를 추적하는 데 소요되는 시간의 극히 일부입니다.다른 것은 재사용하지 않습니다.다음과 같은 NET 개체List<T>
성능에 대한 고려 때문이죠, 그렇죠?에 대해서도 동일한 작업을 수행해야 합니다.RestClient
그것은 단지 그러한 사용 시나리오를 암시하는 방식으로 개발되었을 뿐입니다.
Restclient 버전 >= 107:
본전에서v107
인스턴스를 하나만 생성해야 합니다.은 이버은다사다니합용을을 하고 있습니다.HttpClient
각 HTTP 호출에 대해 RestClient를 인스턴스화하지 마십시오.RestSharp는 내부적으로 HttpClient의 새 인스턴스를 생성하고 많은 연결이 중단되어 결국 연결 풀을 모두 사용하게 됩니다.
종속성 주입 컨테이너를 사용하는 경우 API 클라이언트를 싱글톤으로 등록합니다.
왜 그런지 궁금하다면 여기에서 설명을 볼 수 있습니다.
언급URL : https://stackoverflow.com/questions/49588205/should-restclient-be-singleton-or-create-new-instance-for-every-requests
'sourcetip' 카테고리의 다른 글
NSDate에 한 달을 추가하는 방법은 무엇입니까? (0) | 2023.08.06 |
---|---|
"docker.sock" 파일의 목적은 무엇입니까? (0) | 2023.08.06 |
PHP는 문자열을 16진수로 변환하고 16진수를 문자열로 변환합니다. (0) | 2023.08.06 |
제이드 템플릿 파일에서 스크립트 파일로 변수를 전달하는 방법은 무엇입니까? (0) | 2023.08.06 |
Spring Boot MongoDB에서 텍스트 검색이 작동하지 않습니다. (0) | 2023.08.06 |