Ограничения сетевых ресурсов в Windows RT

Согласно странице 20 документа Введение в фоновые задачи, в разделе Ограничения сетевых ресурсов, фоновая задача может скачивать 4,69 МБ каждые 15 минут.

Означает ли это, что в Windows RT, если мы загружаем файл размером 20 МБ через метро IE10 в фоновом режиме, это займет более 40 минут? (иначе мы должны держать прогресс загрузки впереди)

Кроме того, в качестве фонового приложения вам не разрешено использовать более 0,002% ЦП.

На той же странице они аргументировали это так:

Использование сети может привести к значительному расходу заряда аккумулятора устройства, поэтому оно также ограничено во время выполнения фоновых задач. Однако если устройство работает от сети переменного тока, то фоновые задачи не ограничиваются сетью. Они могут свободно использовать столько пропускной способности сети, сколько им нужно (конечно, ограниченную полосой пропускания или ограничениями использования для конкретного оператора). Обратите внимание, что использование ЦП для фоновой задачи всегда ограничено ресурсами, даже если устройство работает от сети переменного тока.

Именно по этим причинам мы не можем реализовать менеджер загрузок для Windows RT? Как насчет с согласия пользователя?


person Annie    schedule 03.10.2012    source источник


Ответы (2)


Существуют API-интерфейсы для разгрузки загрузок для фонового управления системой: 8-metro-style-app.aspx" rel="nofollow">см. запись в блоге Майка Тоти. Существуют и другие серьезные ограничения для приложений WinRT в фоновом режиме, которые обычно не обсуждаются в сообщениях блогов и на форумах, например тот факт, что ваша фоновая задача выполняется в отдельном подразделении процесса или потока, чем ваше приложение: в технической документации ссылка выше, см. раздел Исполняемый файл узла фоновой задачи. В нем говорится, что если ваша фоновая задача не является PushNotificationTrigger или ControlChannelTrigger, ваша задача является сервером inproc, запускаемым BackgroundTaskHost.exe или WWAHost.exe. Даже в первых двух случаях, когда он работает «в одном приложении», он находится в отдельной квартире. Все они могут обмениваться данными только с основным приложением, упаковывая их в файлы или хранилище ApplicationData.

Я экспериментировал с ControlChannelTrigger и обнаружил следующие ограничения (также перечисленные в документах, если вы их выкопаете):

  • Канал должен быть связан с сокетом до того, как сокет будет подключен.
  • Приложение может использовать только ограниченное количество каналов управления, даже если указаны программные каналы (6 в моем случае).
person Steve    schedule 24.10.2012

Насколько я могу судить из связанного документа, вы ограничены объемом пропускной способности данных в фоновых задачах, который основан на количестве энергии, используемой для питания сетевого устройства, а не на каком-либо конкретном значении данных. Значение 4,69 МБ было приведено только в качестве примера для скорости 10 Мбит/с, что медленнее, чем у большинства стандартных домашних интернет-соединений.

Кроме того, как указано в абзаце, на который вы ссылаетесь, нет никаких ограничений, если устройство подключено к сети, поэтому у настольных ПК и большинства ноутбуков никогда не будет проблем. Нет никаких указаний на то, что вы можете попросить пользователя обойти ограничения.

Так что да, вы можете создать менеджер загрузок, и он должен работать нормально, если вы знаете, где и как пользователь использует приложение, и соответствующим образом настраиваете его.

person Chris Hopkins    schedule 09.10.2012
comment
Спасибо за содержательный ответ. Я наблюдал указанное поведение на своем рабочем столе под управлением Windows 8 pro RTM. Я получил обновления для некоторых приложений магазина, я открыл магазин, нажал кнопку «Установить обновления» и переключился на рабочий стол. Через некоторое время, когда я снова переключился на магазин, приложения не загружались. Некоторое время я оставался на том же экране, и через минуту он загрузил / установил обновления. Это потому, что приложение было приостановлено, когда я переключил контекст? По-видимому, сетевые ограничения не позволяют приостановленным приложениям потреблять пропускную способность. Или приложение магазина разработано таким образом? - person Annie; 14.10.2012