안녕하세요.
결론적으로, HttpClient가 훨씬 뒤에 만들어져
성능 향상된 버전으로 알고 있습니다.
이와 비슷한 케이스가
System.Data.SqlClient의 SqlConnection, SqlCommand, ...
대신에
Microsoft.Data.SqlClient의 SqlConneciton, SqlCommand, ...
클래스가 훨씬 좋은 성능을 냅니다.
기존 시스템과의 호환성이 아니라면,
동일 기능을 한다면 나중에 만들어진 클래스를 사용하는 걸 권장합니다.
Microsoft Docs에서 권장 사항으로 문구가 되어 있다면,
바꿔서 사용하는것도 나쁘지 않습니다.
다만, 이전에 나온 책이라던가 시스템들은 그 시점에 맞는
클래스가 사용되었을 수도 있습니다.
하위 호환성만 아니라면, 최신 버전의 클래스가 좋겠죠^^
On 2022-03-14 오후 3:07:00, '김상태' wrote:
안녕하세요~ 선생님 또 놀러 왔습니다. ~ ^^;;
최근 업무자동화로 클롤링을 준비하게 되어 Seleninum으로 스터디 중에 클롤링 한 파일을 다운로드 할때 2개의 클래스의 차이점을 알고 싶어 문의 드립니다.
1. WebClient 클래스와 HttpClient 차이점에 대하여 궁금 합니다.
2. WebClient로 구현했을때 동기/비동기로 잘 다운로드 됩니다.
using (WebClient client = new WebClient())
{
client.DownloadFile(new Uri(url), @"c:\temp\image.jpg"); // 동기
client.DownloadFileAsync(new Uri(url), @"c:\temp\image.jpg"); // 비동기
}
하지만 MS doc에 보면
https://docs.microsoft.com/ko-kr/dotnet/api/system.net.webclient?view=netframework-4.7.2
설명
중요
새 개발에는 클래스를 사용 하지 않는 것이 좋습니다 WebClient
. 대신는 System.Net.Http.HttpClient 클래스입니다.
라고 나오며 HttpClient를 권장하는 듯한 메시지가 있어 HttpClient를 사용하는 것이 좋은지?
서로 차이점이 무엇인지 궁금 합니다.
3. HttpClient으로도 기본 비동기가 지원되어 구현하여 다운로드 하는데 문제는 없어 보입니다.
단지 HttpClient이 좀더 세밀한 옵션과 바이트방식의 데이터 처리 등을 지원하는것 같습니다.
그리고 System.IO.File로 파일을 작성해야 하는것 같습니다. 저는 이렇게 구현하긴 했지만...
제가 실시간 화상회의나 데이터 처리를 하는 것은 아니기에 무엇을 사용하든 상관 없지만 이번기회에 두 클래스의 차이점을 알고 싶습니다. ~