백그라운드에서 데이터 전송(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

Windows 런타임에 제공된 Windows.Networking.BackgroundTransfer API를 사용하면 앱이 일시 중단되거나 종료된 이후에도 백그라운드로 작업을 실행하고 작업별 수명 주기 관리를 가능하게 해주는 고급 파일 다운로드 및 업로드 기능으로 앱을 개선할 수 있습니다. 이 기능은 HTTP 및 HTTPS 프로토콜을 사용하여 큰 파일을 다운로드 및 업로드하는 작업에 적합합니다. FTP는 다운로드 작업을 수행할 때에만 지원됩니다.

백그라운드 전송은 호출 앱과 별도로 실행되며, 주로 동영상, 음악, 큰 이미지와 같은 리소스에 대한 장기 전송 작업에 사용하도록 설계되었습니다. 이러한 시나리오에서는 앱이 일시 중단된 경우에도 다운로드가 계속 진행되기 때문에 백그라운드 전송을 사용해야 합니다. 휴대폰에서 백그라운드 전송은 앱이 종료된 경우에도 계속 진행됩니다. 앱의 수명 주기에 대한 자세한 내용은 응용 프로그램 수명 주기 설명서를 참조하세요.

참고   빠르게 완료되는 작은 리소스를 다운로드하는 경우 백그라운드 전송 대신 HttpClient API를 사용해야 합니다.

 

백그라운드 전송 기능은 어떻게 작동하나요?

앱에서 백그라운드 전송을 사용하여 전송을 시작하면 BackgroundDownloader 또는 BackgroundUploader 클래스 개체를 사용하여 요청이 구성 및 초기화됩니다. 각 전송 작업은 호출 앱과는 별도로 시스템에서 개별적으로 처리됩니다. 앱의 UI를 통해 사용자에게 상태를 제공하려는 경우 진행률 정보를 사용할 수 있으며, 전송 중에도 앱이 일시 중지, 다시 시작 또는 취소되거나 데이터를 읽을 수 있습니다. 시스템에서 전송을 처리하는 방법에서는 스마트 전원 사용이 이루어지며, 연결된 앱에서 앱 일시 중단, 종료 또는 갑작스러운 네트워크 상태 변경 등의 이벤트 발생 시 생길 수 있는 문제가 방지됩니다.

백그라운드 전송을 사용한 간단한 파일 다운로드에 대한 데모를 보려면 이 짧은 동영상을 시청하세요.

Windows Phone 스토어 앱: 내 앱에서 백그라운드 전송을 사용하여 인증된 파일 요청을 만들 수 있나요?

백그라운드 전송은 기본 서버 및 프록시 자격 증명, 쿠키를 지원하는 방법을 제공하는 것은 물론, 각 전송 작업에 대한 사용자 지정 HTTP 헤더 사용(SetRequestHeader를 통해)도 지원합니다.

이 기능은 네트워크 상태 변경 또는 예기치 못한 종료 시 어떻게 대응하나요?

백그라운드 전송 기능은 네트워크 상태 변경 발생 시 각 전송 작업에 대해 일관된 환경을 유지 관리하여, 연결 기능이 제공하는 연결 및 통신사 요금제 상태 정보를 지능적으로 활용합니다. 네트워크 시나리오별 동작을 정의하기 위해 앱은 BackgroundTransferCostPolicy에 정의된 값을 사용하여 각 작업에 대한 비용 정책을 설정합니다.

예를 들어 작업에 대해 정의되는 비용 정책에서는 장치가 데이터 통신 연결 네트워크를 사용 중인 경우 작업을 자동으로 일시 중지하도록 나타낼 수 있습니다. 그런 다음 "무제한" 네트워크에 연결되면 전송이 자동으로 다시 시작됩니다. 비용을 기준으로 네트워크를 정의하는 방법에 대한 자세한 내용은 NetworkCostType을 참조하세요.

백그라운드 전송 기능은 네트워크 상태 변경을 처리하는 자체 메커니즘을 가지고 있지만, 네트워크에 연결된 앱에 대한 다른 일반적인 연결 고려 사항도 있습니다. 자세한 내용은 사용 가능한 네트워크 연결 정보 활용을 읽어보세요.

참고  

Windows Phone 스토어 앱에는 연결 형식, 로밍 상태 및 사용자의 데이터 요금제에 따라 전송되는 데이터 양을 사용자가 모니터링하고 제한할 수 있는 기능이 있습니다. 이 때문에 BackgroundTransferCostPolicy에 전송이 진행 중으로 표시되는 경우에도 휴대폰에서 백그라운드 전송이 일시 중지될 수도 있습니다.

다음 표에서는 현재 휴대폰 상태에서 각 BackgroundTransferCostPolicy 값에 대해 휴대폰에서 백그라운드 전송이 허용되는 경우를 보여 줍니다. ConnectionCost 클래스를 사용하여 현재 휴대폰 상태를 확인할 수 있습니다.

휴대폰 상태 UnrestrictedOnly 기본값 항상
WiFi에 연결됨 허용 허용 허용
데이터 통신 연결, 로밍 안 함, 데이터 제한 적용, 제한 아래로 유지됨 거부 허용 허용
데이터 통신 연결, 로밍 안 함, 데이터 제한 적용, 제한 초과 거부 거부 허용
데이터 통신 연결, 로밍 중, 데이터 제한 아래 거부 거부 허용
데이터 통신 연결, 데이터 제한 초과. 이 상태는 사용자가 Data Sense UI에서 "백그라운드 데이터 제한"을 사용하도록 설정한 경우에만 발생합니다. 거부 거부 거부

 

RequestUnconstrainedDownloadsAsyncRequestUnconstrainedUploadsAsync는 휴대폰에서 지원되지 않습니다. 이러한 API 호출은 컴파일되지만 런타임 시 E_NOT_IMPL 예외가 발생하며 실패합니다.

백그라운드 전송에 대한 자세한 정보

섹션 설명
네트워크 리소스에서 파일 전송

Windows 스토어 앱에 파일을 안전하게 다운로드 및 업로드하는 접근 권한 값을 추가하세요.

Background Transfer API reference

전체 백그라운드 전송 Windows 런타임 네임스페이스에 대한 API 설명서입니다.

백그라운드 전송 샘플

이 샘플은 절전, 비용 인식 및 유연성을 제공하는 Windows 스토어 앱용 백그라운드 전송 API의 동작을 보여 줍니다.

 

관련 항목

Windows.Web.Http를 사용하여 HTTP 서버에 연결