«Плитки» быстрого доступа в Windows 8 – как это работает?

Мгновенные уведомления очень удобны для быстрого доступа к новостям, спортивным результатам, прогнозам погоды, которые можно просматривать в режиме real time. Несмотря на то, что такую функцию поддерживают практически все современные ноутбуки, смартфоны и другие гаджеты, у них есть существенный недостаток – высокие затраты производительности и высокое потребление батареи устройства.

Избежать этих проблем позволит начальный экран системы Windows 8, который работает на совершенно новой платформе уведомлений, обеспечивая минимальный уровень загрузки системы и потребления заряда. Экран поддерживает более сотни изменяющихся плиток, которые вместо привычного текста и значков представлены в виде привлекательных изображений. Информация поступает на устройство мгновенно, таким образом, образуя работу в реальном времени. Модифицированная система экрана разделена на несколько частей и включает в себя логический процесс, который определяет время соединения, процедуру аутентификации, кэширование, обработку ошибок, и регулирование нагрузки. Работа такой системы возможна благодаря единой модели, которая управляет данными – таким образом, все плитки создаются по шаблону заранее заданных свойств. Другими словами, используется XML-схема. С помощью службы WNS передаются данные о плитках. Таким образом, было достигнуто снижение затрат ресурсов системы.

Вопрос отображения информации в реальном времени выполняется благодаря технологии push, которая предусматривает, что новый контент отправляется клиенту в момент, как только он становится доступным на сервере. Другая технология poll (используемая для системного трея и гаджетов в Windows Vista) предусматривала запрос клиента к серверу с определенной периодичностью, для выявления наличия новых данных.

Платформа типа «Push» основана на трех основных элементах:
WNS (поддерживает уведомления плиток),
Сервис приложений (сервис, запускающий определенную службу, который также отправляет тост-уведомления для обновления динамических плиток через компонент WNS),
Платформа Windows 8 (включает в себя собственно само устройство и дополнительные элементы системы, которые в совокупности образуют единую область компонентов, обеспечивающих поддержку уведомлений)

Push работает таким образом, что новые данные обнаруживаются службой, которая отправляет уведомление в компонент WNS. Тот, в свою очередь, перенаправляет уведомление на клиента. Система компьютера получает изображение от компонента, доступное по ссылке. Уведомление закачивается на устройство и прорисовывается в виде динамической плитки, учитывая шаблон XML-данных. После этого плитка отображается на начальном экране Windows 8. Для того, чтобы облегчить труд разработчиков, и предусмотреть повторную передачу данных (например, когда устройство не подключено к Интернету), для каждой службы в области WNS, кешируется по одному уведомлению, которое хранится там до подключения компьютера к сети.

Значительно снизить энергопотребление позволило разделение «нужных» и «ненужных» уведомление, а точнее отдельное закачивание XML-информации, от изображения. Это позволяет избежать постоянного дублирования изображений. Допустим, если плитка содержит изображение, которое не меняется, система скачивает его единоразово и сохраняет на локальном уровне. Таким образом, отсеиваются «ненужные» уведомления.
Немаловажным фактором стало использование в новой платформе механизма анонимной идентификации, который фиксирует соединение устройства со службой WNS. Другие приложения и сервиса проходят ту же процедуру.

Аутентификация обоих соединений с WNS помогает защититься от передачи злонамеренных данных при обновлении динамической плитки, например, от атаки с подделкой идентификации (spoofing attacks). Механизм аутентификации, используемый WNS, явно связывает приложение и сервис между собой. Он реализован таким образом, что другие приложения (или пользователи) не могут отправить контент плиткам, которыми они не владеют. И, разумеется, все взаимодействия осуществляются по защищенному каналу.
Это работает независимо от того, вошли ли вы в Windows с помощью идентификатора Windows Live ID. При работе с Windows 8 лучше всего иметь учетную запись, связанную с этим идентификатором, поскольку это дает доступ к дополнительным возможностям: хранению данных приложений в облаке; перенос параметров Windows и приложений; и единый вход в несколько приложений. Платформа push-уведомлений использует механизм анонимной аутентификации, поэтому даже если вы вошли под Windows Live ID, разработчик приложения не сможет задействовать конвейер уведомлений, чтобы определить ваш Windows Live ID, системную информацию или местонахождение.

Платформа, нацеленная на масштабируемость

Платформа должна поддерживать невероятно большое количество пользователей и приложений. На этапе разработки, предшествовавшем появлению бета-версии, мы уже отправляли почти 90 миллионов обновлений плиток в день. Приложение Stocks — одно из наиболее популярных пробных приложений в сборке Developer Preview. После выхода Developer Preview мы внимательно отслеживали трафик через центры данных, наблюдая за горизонтальным масштабированием.
Архитектура WNS основана на архитектуре сервиса Windows Live Messenger. Сервисная часть платформы уведомлений разрабатывалась, по сути, той же самой группой. Вот кое-какая статистика, дающая представление о масштабируемости сервиса Windows Live Messenger в настоящее время:

  • 300 миллионов активных пользователей в месяц;
  • 630 миллионов входов каждый день;
  • 10 миллиардов уведомлений в день;
  • более 40 миллионов одновременных онлайновых соединений (simultaneous online connections, SOC) при пиковой нагрузке;
  • более 3000 компьютеров, маршрутизирующих сообщения по всему миру.

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

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

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