비동기 작업
애플리케이션이 인터넷 리소스에 액세스하는 데 걸리는 시간은 사용 중인 연결, 리소스가 있는 서버 및 리소스에 액세스하려는 사용자 수와 같은 다양한 요인에 따라 달라집니다. 여러 리소스를 다운로드하거나 여러 작업(하나 이상의 다운로드 포함)을 처리하는 애플리케이션의 경우 다음 작업으로 이동하기 전에 각 다운로드가 완료될 때까지 기다리는 것은 매우 비효율적일 수 있습니다. 애플리케이션에서 대기해야 하는 시간을 줄이기 위해 많은 WinINet 함수가 비동기적으로 작동할 수 있습니다.
비동기 모드에서 애플리케이션은 컨텍스트 값을 매개 변수 중 하나로 포함하는 모든 함수를 실행할 수 있으며, 애플리케이션이 함수가 작업을 완료할 때까지 기다리는 동안 다른 명령이나 함수를 계속 실행할 수 있습니다. 작업이 완료되는 동안 애플리케이션에서 제공하는 상태 콜백 함수는 작업의 진행 상황과 완료 시기에 대한 알림을 받습니다. 이때 상태 콜백 함수는 다른 함수를 호출하거나 작업의 완료에 종속된 다른 필수 작업을 수행할 수 있습니다.
WinINet을 비동기적으로 호출할 때 콜백 스레드 무한대는 없습니다. 한 스레드에서 호출이 시작될 수 있지만 다른 스레드는 콜백을 받을 수 있습니다.
이점
비동기적으로 작동하면 몇 가지 이점이 있습니다. 예시:
여러 인터넷 리소스를 동시에 다운로드합니다.
여러 인터넷 리소스에 동시에 연결하여 사용할 수 있게 되면 다운로드할 수 있습니다.
애플리케이션의 성능 향상
WinINet 함수를 사용하는 애플리케이션은 요청이 완료될 때까지 비동기적으로 기다릴 필요가 없으므로 애플리케이션은 요청에 종속되지 않는 다른 작업을 자유롭게 수행할 수 있으므로 애플리케이션의 전반적인 성능이 향상됩니다.
다운로드 진행률을 모니터링합니다.
상태 콜백 함수는 요청을 처리하는 동안 알림을 받습니다. 필요한 경우 애플리케이션은 해당 상태 콜백 함수에서 제공하는 정보를 사용하여 사용자에게 작업 진행 상황을 알리거나 완료하는 데 너무 오래 걸리는 요청을 중단할 수 있습니다.
시나리오
애플리케이션이 Downfall Coffee & Tea 및 Fourth Coffee 사이트에서 커피 가격을 다운로드하고 가격을 비교해야 한다고 가정해 보겠습니다. Fourth Coffee 사이트는 일반적으로 응답 시간이 느리므로 애플리케이션은 먼저 Downfall Coffee & Tea에서 정보를 다운로드해야 합니다.
두 가지 버전의 애플리케이션이 개발되었습니다. 하나는 동기적으로 작동, 먼저 다운 폴 커피 & 티 사이트에서 가격을 다운로드 한 다음 네 번째 커피 사이트에서 가격. 두 번째는 비동기적으로 작동하여 두 사이트에 요청을 보내고 사용 가능해지면 가격을 다운로드합니다.
다음 표에서는 특정 날짜에 Fourth Coffee 사이트가 더 빠른 경우 어떤 일이 발생하는지 보여 줍니다.
이벤트 | 동기 버전 | 비동기 버전 |
---|---|---|
시작 | Downfall Coffee & Tea에 요청 보내기 | 다운폴 커피 & 차와 네 번째 커피에 요청 보내기 |
비동기 버전에서 Fourth Coffee로 요청 완료됨 | 대기 | Fourth Coffee에서 가격 다운로드 |
다운폴 커피 & 티에 대한 요청 완료 | 다운폴 커피 & 티에서 가격 다운로드 | 다운폴 커피 & 티에서 가격 다운로드 |
다운 폴 커피와 차의 가격이 다운로드 된 후 | Fourth Coffee에 요청 보내기 | 가격 비교 |
비동기 버전의 비교 완료 | 대기 | 작업 완료 |
동기 버전에서 Fourth Coffee로 요청 완료됨 | Fourth Coffee에서 가격 다운로드 | 해당 없음 |
네 번째 커피의 가격이 다운로드 된 후 | 가격 비교 | 해당 없음 |
동기 버전의 비교가 완료됨 | 작업 완료 | 해당 없음 |
또 다른 예로 Microsoft Internet Explorer와 같은 웹 브라우저가 있습니다. 브라우저에서 페이지를 다운로드할 때 이미지 및 사운드 파일과 같은 다른 리소스를 다운로드해야 하는 경우가 많습니다. 비동기 모드에서는 페이지와 각 리소스를 한 번에 하나씩 요청하고 다운로드하는 대신 페이지와 관련 리소스를 동시에 요청하고 사용할 수 있게 되면 다운로드할 수 있습니다.
관련 항목
관련 링크는 다음과 같습니다.
자습서
비동기 작업을 설정하는 데 필요한 함수
비동기적으로 사용할 수 있는 함수
- FtpCreateDirectory
- FtpDeleteFile
- FtpFindFirstFile
- FtpGetCurrentDirectory
- FtpGetFile
- FtpOpenFile
- FtpPutFile
- FtpRemoveDirectory
- FtpRenameFile
- FtpSetCurrentDirectory
- GopherFindFirstFile
- GopherOpenFile
- HttpEndRequest
- HttpOpenRequest
- HttpSendRequestEx
- 인터넷커넥트
- InternetOpenUrl
- InternetReadFileEx
참고 항목
FtpCreateDirectory, FtpRemoveDirectory, FtpSetCurrentDirectory, FtpGetCurrentDirectory, FtpDeleteFile 및 FtpRenameFile 함수는 Internet커넥트 함수 호출에 제공된 컨텍스트 값을 사용합니다.
참고 항목
WinINet은 서버 구현을 지원하지 않습니다. 또한 서비스에서 사용하면 안 됩니다. 서버 구현 또는 서비스의 경우 WinHTTP(Microsoft Windows HTTP 서비스)를 사용합니다.