본문 바로가기
C,C++

[C/C++] WinINet vs WinHTTP in MSDN

by 슈퍼닷 2017. 2. 23.
반응형

HTTP통신을 하기위해서 우리가 사용할수 있는 방법은 WinINetWinHTTP 가 있다.

통신을 하기위해선 둘중 하나를 선택해야된다. 그렇다면, 어떤것을 선택하는게 좋을까?

MSDN에서는 특별한 경우가 아니거나 둘중 뭘 사용해야 될지 모르겠다면 "WinINet"을 사용하기를 권장한다.

어째서 WinINet을 권장하는 것일까??


그 이유는 WinHTTP가 못하는 것을 WinINet이 할 수있기 때문이다. 따라서 WinINet은 WinHTTP의 상위호환이라 생각해도 된다.

그렇기 때문에 우리는 당연히 상위호환인 WinINet을 사용하는게 올바른 선택일 것이다.

WinINet은 자격증명 캐시, 자격증명을 자동으로 얻고 이에 대한 코드를 제공한다고 한다.

또, 쿠키들을 저장하거나 보거나 하는 API 들도 제공한다고 한다.

이런것 보다도 아마 제일 WinHTTP와 많은 차이점을 갖는 부분은 WinINet은 FTP 관련 API를 제공한다는 것이다.

이것만으로도 WinINet이 WinHTTP보다 범용적이고 유용하다고 볼 수있다.

그렇다면 WinHTTP가 필요한 경우는 언제일까?


Service를 지원, Session Isolation , Impersonation 이 세가지가 제시되어있다.

Services Support 부분은 service 나 service account 에서 실행 될수있는 점이다. OS Service에 접근 하는데에 의의가 있는것 같다.


Session Isolation 부분은 서로에게 영향을 주지 않는다고 되어있다. Session Isolation 에 대해서도 찾아보았다.

Session Isolation 부분에 대한 이해는 이 글의 주제에서 많이 동떨어져있다고 생각되어 요약만 해놨다.




Impersonation 부분은 Service 접근을 위해 가상의 User를 만드는 작업으로 보인다.

이 세가지 모두가 Servcie에 대한 지원이라고 봐도 무방할 것같다.


결론은 이렇다. C/C++ 에서는 WinINet을 쓰자.

반응형

댓글