Передача данных в фоновом режиме (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
Применение API Windows.Networking.BackgroundTransfer, которые являются частью среды выполнения Windows, позволит вам усовершенствовать приложение и включить в него расширенные функции скачивания и отправки файлов, которые работают в фоновом режиме в случае приостановки приложения, демонстрируют пооперационное управление жизненным циклом и сохраняются после завершения работы приложения. Эта возможность идеально подходит для операций скачивания и выкладывания больших файлов по протоколам HTTP и HTTPS. Протокол FTP поддерживается, но только для операций скачивания.
Фоновая передача данных, выполняющаяся независимо от вызывающего приложения, в основном используется при длительных операциях передачи таких данных, как видео, музыка и крупные изображения. Для этих сценариев использование фоновой передачи данных необходимо, так как скачивание продолжается даже после приостановки приложения. На телефонах фоновая передача данных продолжается и в том случае, если приложение завершает работу. Подробнее: Жизненный цикл приложения.
Примечание Для небольших ресурсов, которые, скорее всего, скачаются быстро, вместо фоновой передачи данных следует использовать API HttpClient.
Как работает передача данных в фоновом режиме
Когда приложение использует функцию фоновой передачи данных для запуска передачи данных, настройка и инициализация запроса производятся с помощью объектов класса BackgroundDownloader или BackgroundUploader. Каждая операция передачи данных обрабатывается системой отдельно и независимо от вызывающего приложения. Если вы хотите отобразить состояние передачи данных в пользовательском интерфейсе приложения, можно использовать информацию о ходе выполнения, при этом приложение может приостанавливать, возобновлять, отменять передачу данных или даже считывать данные в процессе их передачи. Способ, которым система обрабатывает передачу данных, позволяет разумно использовать электроэнергию и предотвращать проблемы, которые могут возникнуть, когда работа подключенного приложения нарушается такими событиями, как приостановка или завершение работы либо внезапные изменения состояния сети.
Просмотрите это короткое видео, чтобы увидеть демонстрацию простого скачивания файла при помощи передачи данных в фоновом режиме.
Приложения Магазина Windows Phone: может ли приложение использовать фоновую передачу данных для создания запросов файлов с проверкой подлинности?
Функция передачи данных в фоновом режиме предоставляет методы, поддерживающие базовые учетные данные сервера и прокси-сервера, файлы cookie, а также настраиваемые заголовки HTTP (с помощью метода SetRequestHeader) для каждой операции передачи.
Как эта функция адаптируется к изменениям состояния сети или неожиданным выключениям компьютера?
При изменениях состояния сети функция передачи данных в фоновом режиме сохраняет согласованную работу каждой передачи путем интеллектуального использования сведений о подключении и состоянии тарифного плана поставщика услуг, которые предоставляются функцией Подключение. Поведение приложения в различных условиях подключения к сети определяется тарифной политикой, которая устанавливается для каждой операции передачи данных с использованием значений из BackgroundTransferCostPolicy.
Например, в тарифной политике, установленной для операции, может быть указано, что операция должна автоматически приостанавливаться, если устройство используется в сети с лимитным тарифным планом. Передача данных автоматически возобновляется (или перезапускается) при подключении устройства к "неограниченной" сети. Подробнее о задании тарифов для сетей см. в разделе NetworkCostType.
Хотя функция фоновой передачи данных имеет собственные механизмы обработки изменений состояния сети, существуют другие общие условия сетевого подключения, применимые к приложениям с подключением к сети. Подробности см. в разделе об использовании информации о доступных сетевых подключениях.
Примечание
В приложения Магазина Windows Phone могут быть добавлены возможности отслеживания и ограничения объема передаваемых данных в зависимости от типа подключения к сети, нахождения в роуминге и тарифного плана, используемого пользователем. Поэтому на телефоне фоновая передача данных может быть приостановлена несмотря на то, что BackgroundTransferCostPolicy сообщает о необходимости ее продолжения.
В следующей таблице показано, когда разрешена фоновая передача данных на телефоне для каждого значения BackgroundTransferCostPolicy с учетом текущего состояния телефона. Чтобы определить текущее состояние телефона, можно использовать класс ConnectionCost.
Состояние телефона | Только без ограничений | По умолчанию | Всегда |
---|---|---|---|
Подключение к WiFi | Разрешена | Разрешена | Разрешена |
Лимитное подключение, не в роуминге, лимит данных не достигнут, настроен на отслеживание расходов по тарифному плану | Запрещена | Разрешена | Разрешена |
Лимитное подключение, не в роуминге, лимит данных не достигнут, настроен на отслеживание превышения лимита | Запрещена | Запрещена | Разрешена |
Лимитное подключение, в роуминге, лимит данных не достигнут | Запрещена | Запрещена | Разрешена |
Лимитное подключение, лимит данных превышен Это состояние возможно только в случае, если пользователь выбирает "Ограничить фоновую передачу данных в Data Sense". | Запрещена | Запрещена | Запрещена |
API RequestUnconstrainedDownloadsAsync и RequestUnconstrainedUploadsAsync для телефона не поддерживаются. Вызов этих API не приведет к ошибкам при компиляции, но во время выполнения будет обработано исключение E_NOT_IMPL.
Дополнительные сведения о передаче в фоновом режиме
Раздел | Описание |
---|---|
Передача файла с сетевого ресурса | Реализация возможности безопасного скачивания и отправки файлов в приложении Магазина Windows. |
Background Transfer API reference | Документация API по всему пространству имен для фоновой передачи данных в среде выполнения Windows. |
Пример передачи в фоновом режиме | Этот пример демонстрирует гибкое, разумно использующее энергию и учитывающее затраты поведение API передачи в фоновом режиме для приложений Магазина Windows. |