Как настроить параметры фонового подключения (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

В разделе рассказывается о возможностях фонового сетевого подключения, доступных в приложении среды выполнения Windows на JavaScript и HTML, а также о настройке параметров фонового подключения.

Что необходимо знать

Технологии

  • IXMLHTTPRequest2

    Разрешает доступ к веб-ресурсам при помощи расширения объекта XMLHttpRequest.

  • System.Net.Http

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

Необходимые условия

  • Следующая информация относится к любому приложению среды выполнения Windows, подключенному к сети или поддерживающему работу в сети и зависящему от непрерывных сетевых подключений. Этот раздел применим к приложениям на JavaScript и HTML для Windows 8.1, Windows Phone 8.1 и Windows Server 2012 R2. Дополнительные сведения о фоновых задачах, относящихся к приложениям на JavaScript, см. в разделе Поддержка приложения с помощью фоновых задач.

    Дополнительные сведения о подключенных или сетевых приложениях Магазина Windows на C++/XAML и приложениях, использующих платформу .NET Framework 4.5 и написанных на C#, VB.NET или управляемом C++ для Windows 8.1 и Windows Server 2012 R2, см. в разделе Подключение в фоновом режиме.

Модель жизненного цикла для приложений Магазина Windows

В Windows 8 и более поздних версиях появилась новая модель жизненного цикла для приложений среды выполнения Windows, которая отличается от модели для классических приложений Windows 8 и приложений предыдущих версий Windows. По умолчанию работа приложения среды выполнения Windows полностью приостанавливается, когда оно переходит в фоновый режим. В некоторых случаях приложение не приостанавливается (например, активная печать, доступ к аудиопотоку, передача файлов в фоновом режиме при помощи Windows.Networking.BackgroundTransfer). Для некоторых из этих исключений (например, Windows.Networking.BackgroundTransfer) приложение все же может быть приостановлено, но Windows продолжит передачу данных по сети в отдельном процессе.

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

Чтобы реализовать сценарии работы в сети в режиме реального времени для приложения среды выполнения Windows на JavaScript, которому требуется постоянное подключение, можно воспользоваться рядом новых функций, представленных в Windows 8:

  • фоновые задачи;
  • системный триггер для SessionConnected;
  • триггеры времени;
  • службы push-уведомлений Windows (WNS);
  • необработанные push-уведомления.

Эти функции обеспечивают поддержку постоянно подключенных приложений, которым нужно принимать необработанные push-уведомления, когда приложение среды выполнения Windows приостановлено. Такие приложения называются также постоянно достижимыми. В этом разделе объясняется, как разработчик с помощью WNS и необработанных push-уведомлений может создать постоянно подключенное приложение, работающее в реальном времени. Для работы этих функций необходимо, чтобы приложение отображалось на экране блокировки.

Другие функции фоновых задач могут использоваться и сетевым приложением. Для приложения среды выполнения Windows доступен ряд дополнительных триггеров:

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

Триггер времени можно использовать, если приложению не требуется подключение в реальном времени, но оно должно запускаться на короткое время с некоторым интервалом. Системный триггер используется, если приложение должно реагировать на события (например, доступность подключения к Интернету или присутствие пользователя). В приложении можно сочетать различные триггеры, реализуя разнообразные сценарии. Дополнительные сведения см. в разделе Поддержка приложения с помощью фоновых задач.

Большинству приложений среды выполнения Windows не требуется использовать необработанные push-уведомления, описанные в этом разделе. При помощи живой плитки или живой плитки с push-уведомлениями (отличными от необработанных push-уведомлений) из WNS приложение может создать у пользователя впечатление, что оно непрерывно выполняется в фоновом режиме. Чтобы использовать живую плитку, приложение не обязательно должно располагаться на экране блокировки (как описано далее в этом разделе) или работать в фоновом режиме. Но для использования необработанных push-уведомлений на живой плитке приложение должно располагаться на экране блокировки.

Требования для постоянного подключения

Для постоянного подключения и постоянной достижимости приложения необходимо два элемента.

  • Долговременный процесс, обеспечивающий прием входящих сетевых уведомлений и возможность их быстрой обработки в приложении.
  • Долговременное сетевое подключение к удаленной конечной точке, которая может отправлять и принимать данные по мере необходимости.

В предыдущих версиях Windows приложения продолжали работать после потери фокуса (в фоновом режиме). Такие приложения могут поддерживать при работе в фоновом режиме долговременные подключения, поскольку они могут отправлять и принимать данные и сообщения проверки активности. Работа приложений в фоновом режиме расходует ресурсы и может повлиять на скорость ответа других приложений и время работы батареи.

Приложения среды выполнения Windows и экран блокировки

В Windows 8 появилась новая программная модель, в которой приложения среды выполнения Windows, переведенные в фоновый режим, приостанавливаются. После приостановки приложения полученные системой пакеты не могут быть сразу доставлены приложению, и входящие сетевые пакеты могут отбрасываться. Когда приложение приостановлено, новые пакеты не отправляются. Таким образом, существующие сетевые подключения могут быть закрыты.

Для сохранения постоянного подключения приложение должно располагаться на экране блокировки. Приложение на экране блокировки — это приложение особого типа, которое может выводить уведомления на экране блокировки и выполнять код в фоновом режиме, когда само приложение не находится на переднем плане. Приложением на экране блокировки может быть только приложение, использующее одну или несколько фоновых задач.

Приложения на экране блокировки обладают некоторыми особенностями.

  • Возможность получать необработанное push-уведомление от WNS с возможностью выполнения кода при получении уведомления.
  • Возможность выполнять код при срабатывании триггера времени.
  • Возможность выполнять код при запуске сеанса пользователя.

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

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

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

Для большинства приложений не нужны возможности работы на экране блокировки. Приложение, приостановленное в фоновом режиме, может использовать push-уведомления (за исключением необработанных push-уведомлений) из WNS для обновления живой плитки, и пользователь будет считать, что приложение работает и готово предоставить свежие данные. С помощью WNS приложения также в любое время могут показывать пользователю всплывающее уведомление или обновлять показания индикатора на плитке приложения.

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

Это функция, позволяющая получать входящие сетевые пакеты, если приложение, написанное на JavaScript и HTML, работает в фоновом режиме.

  • Необработанные push-уведомления, получаемые системой и вызывающие запуск фоновой задачи в приложении. С помощью этого компонента приложение получает необработанные данные от службы push-уведомлений Windows (WNS). Содержимое этих данных должно быть понято приложением. Чтобы получить необработанное push-уведомление, приложение должно быть зарегистрировано в WNS.

Далее рассматриваются механизмы, которые обеспечивают работу в реальном времени для приложений, помещенных на экран блокировки. У каждого механизма есть свои преимущества и недостатки. В некоторых приложениях можно одновременно использовать несколько механизмов.

Использование WNS в приложениях Магазина Windows

WNS — это облачная служба, размещенная на серверах корпорации Майкрософт для Windows 8. Приложения среды выполнения Windows могут использовать ее для получения уведомлений, которые запускают код, обновляют живую плитку или отображают уведомление на экране. Для доступа к WNS локальный компьютер должен быть подключен к Интернету, чтобы служба WNS могла взаимодействовать с ним. Дополнительные сведения см. в разделе Обзор push-уведомлений

Приложение среды выполнения Windows на переднем плане может использовать WNS для обновления живой плитки, отображения уведомлений для пользователя или обновления индикаторов событий. Для использования WNS приложения не обязательно должны располагаться на экране блокировки. WNS рекомендуется использовать в приложениях, которые в ответ на push-уведомление должны выполнять код.

Для приложений, которым не требуется экран блокировки (это большинство приложений), WNS позволяет обновлять живую плитку.

Если закрепить приложение среды выполнения Windows на экране блокировки и использовать WNS в фоновом режиме, то приложение может получать необработанные push-уведомления от WNS в реальном времени и отображать их на экране блокировки в виде обновления индикатора событий или уведомления. Когда в приложение на экране блокировки доставляется необработанное push-уведомление, приложение в ответ на уведомление может выполнять код. При использовании WNS достигается значительная экономия электроэнергии по сравнению с использованием сетевых триггеров, доступных в приложениях Магазина Windows, которые написаны на C++/XAML, и в приложениях, которые используют платформу .NET Framework 4.5 и написаны на C#, VB.NET или управляемом C++ в Windows 8.1 и Windows Server 2012 R2.

WNS обладает рядом преимуществ:

  • WNS предлагает механизм доставки уведомлений в реальном времени в приложения на экране блокировки с минимальным энергопотреблением.
  • WNS упрощает модель разработки приложения. В большинстве сценариев разработчикам не нужно писать код фоновых задач, поскольку обработкой плитки и всплывающих уведомлений занимается операционная система. В более редких случаях, когда приложение должно выполнять фоновую задачу, ему требуется зарегистрировать необработанное push-уведомление и саму задачу.
  • Не нужно поддерживать постоянное соединение через сокет между клиентским приложением и удаленным сервером, поскольку Windows поддерживает подключение к WNS, и не нужно затрачивать ресурсы на отправку сообщений проверки активности.
  • Одного соединения WNS между клиентом и облачной службой достаточно для поддержки всех приложений на локальном компьютере, что обеспечивает эффективную работу клиентского устройства от батареи.
  • Можно сократить эксплуатационные расходы для службы на стороне сервера, так как нет необходимости поддерживать множество подключений к TCP-сокетам между клиентом и удаленной службой.
  • Приложение не должно все время находиться в памяти. Оно может завершить работу, но WNS будет обновлять плитку, показывать всплывающие уведомления и запускать фоновую задачу в ответ на входящее необработанное push-уведомление.
  • Фоновые задачи, использующие необработанные push-уведомления, могут быть написаны на JavaScript, C++/XAML и с использованием платформы .NET Framework 4.5 на C#, VB.NET или управляемом C++ в Windows 8.1 и Windows Server 2012 R2.

В JavaScript отсутствует возможность использования сетевого триггера с помощью ControlChannelTrigger.

Примечание  ControlChannelTrigger не поддерживается в Windows Phone

 

Фоновое сетевое подключение, в котором участвуют сетевые триггеры, может быть написано только на C++ или XAML и с использованием платформы .NET Framework 4.5 на C#, VB.NET или управляемом C++ в Windows 8 и Windows Server 2012. Дополнительные сведения об этом см. в разделе о подключении в фоновом режиме.

В WNS также действуют ограничения, которые могут распространяться на некоторые приложения. Служба WNS недоступна для локального компьютера, подключенного к частной домашней или рабочей сети, в которой блокируется выход в общедоступный Интернет. WNS также может блокироваться некоторыми сетевыми брандмауэрами, когда Интернет доступен. При использовании WNS выявляется ряд других недостатков, которые необходимо учитывать. В частности, уведомления передаются без гарантии доставки. Максимальный размер полезных данных в необработанном push-уведомлении составляет 5 килобайт.

Разработчикам приложений для работы с VoIP, мгновенными сообщениями и электронной почтой рекомендуется использовать уведомления WNS для приложений на экране блокировки, но если этих уведомлений недостаточно, следует изучить альтернативные решения.

Если нужно просто обновлять живую плитку или выводить всплывающее уведомление с помощью WNS, то не обязательно создавать приложение на экране блокировки. Такое приложение при использовании WNS необходимо только в случае, когда необработанное push-уведомление должно запускать фоновую задачу.

Использование триггеров времени или триггеров системных событий в приложениях среды выполнения Windows

Приложения на экране блокировки можно настроить для периодического выполнения кода с помощью триггера времени с минимальным интервалом в 15 минут. Например, можно запрашивать новые сообщения почты, если приложение подключено к почтовому серверу POP3 или IMAP.

В приложениях на экране блокировки также можно использовать триггер системного события для выполнения кода, когда пользователь выполняет вход на локальный компьютер (системный триггер для начала сеанса). Например, можно регистрировать пользователя в службе мгновенных сообщений, когда начинается сеанс.

В этом разделе рассматривается создание приложений на экране блокировки с использованием необработанных push-уведомлений через WNS или сетевые триггеры. Подробнее об использовании таймера см. в разделе Запуск фоновой задачи по таймеру. Дополнительные сведения об использовании фоновых задач см. в разделе Поддержка приложения с помощью фоновых задач.

Фоновые задачи и ограниченное выделение ресурсов

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

Дополнительные сведения см. в разделе Поддержка приложения с помощью фоновых задач.

Дальнейшие шаги

Дополнительные сведения о создании приложения на экране блокировки для получения фоновых сетевых уведомлений, использующих необработанные push-уведомления, см. в соответствующем разделе.

Подробнее о процессе регистрации канала push-уведомлений и его отправки на сервер, регистрации фоновой задачи для инициации по необработанному push-уведомлению, отправке необработанного push-уведомления по каналу и активации фоновой задачи см. в разделе Доставка необработанных push-уведомлений в приложение на экране блокировки с помощью WNS.

Дополнительные сведения о написании фоновой задачи с возможностью получения фоновых сетевых уведомлений, использующих необработанные push-уведомления, см. в разделе Написание фоновой задачи для необработанных push-уведомлений.

Подробнее о руководстве и контрольных списках для необработанных push-уведомлений см. в разделе Руководство и контрольный список для необработанных уведомлений.

Связанные разделы

Другие ресурсы

Добавление поддержки сети

Фоновая работа в сети

Общие сведения об индикаторах событий

Руководство и контрольный список для необработанных уведомлений

Проверка подлинности с помощью службы push-уведомлений Windows (WNS)

Доставка необработанных push-уведомлений в приложение на экране блокировки с помощью WNS

Написание фоновой задачи для необработанных push-уведомлений

Обзор экрана блокировки

Обзор push-уведомлений

Создание на экране блокировки приложения, использующего фоновые необработанные push-уведомления

Подключение в фоновом режиме

Поддержка приложения с помощью фоновых задач

Общие сведения о плитках и уведомлениях плиток

Общие сведения о всплывающих уведомлениях

Передача данных в фоновом режиме

Диагностика и отладка сетевых подключений

Ссылки

ControlChannelTrigger

HttpClient

HttpClientHandler

IXMLHTTPRequest2

MessageWebSocket

StreamSocket

StreamWebSocket

System.Net.Http

Windows.ApplicationModel.Background

Windows.Networking.BackgroundTransfer

Windows.Networking.PushNotifications

Windows.Networking.Sockets

Примеры

Пример фоновой задачи

Примеры приложений на экране блокировки

Пример периодических и push-уведомлений со стороны

Пример необработанного уведомления