Windows 8 : animation avec les mosaïques

L'architecture de Windows 8 axée sur les données vous permet d'exécuter de nombreuses applications en même temps tout en maintenant les performances et l'autonomie de la batterie.

Ryan Haveson

Ces jours-ci, à peu près n'importe quel PC, ordinateur portable ou un environnement mobile a une certaine forme de gadget, widget ou un modèle de plug-in qui vous donne des informations en un clin de œil. Vous pouvez regarder la TV nouvelles, sports ou la météo dans un écran structuré avec de nombreuses sources de données, se réunir en temps réel. Vous devriez être en mesure de rapidement vérifier vos stocks, météo, e-mail, rendez-vous ou statut de réseautage social même en quelques secondes avant de revenir à tout ce que vous faites.

Cela se traduit par une ponction massive sur les performances et autonomie. À bien des égards, on pourrait soutenir que le PC moderne a certains de rattrapage à faire dans ce domaine par rapport aux ordinateurs portables et autres appareils mobiles. Dans la conception de l'infrastructure de notifications dans Windows 8, le défi était de savoir comment faire vivre la sensation de PC ayant une activité tout en continuant à fonctionner efficacement en ce qui concerne l'utilisation de bande passante et de puissance.

L'écran de démarrage de Windows 8 rend ce type d'opération efficace du point de vue de l'utilisateur en vous donnant un collimateur plein écran sans interférer avec votre ordinateur de bureau ou d'autres applications. En plus d'améliorer l'efficacité, on voulait s'assurer que vous pourriez installer des apps notifiantes autant que vous le souhaitez, sans avoir à vous soucier de l'impact sur la vie de performance ou de la batterie. Vous pouvez utiliser l'écran de démarrage de Windows 8 comme un affichage tête haute très lisible et unifié pour les applications line-of-business (LOB). De cette façon, il est devenu un exhausteur de la productivité.

Avec l'évolutivité de notre nouvelle plateforme de notifications push, Windows 8 peut fournir cette capacité avec un impact minimal. Même la plus hardcore personne exclusivement bureautiques trouverez beaucoup de valeur dans l'écran de démarrage, comme une zone de notification centralisée, bien présenté et contrôlé qui est juste une combinaison de touches à.

Objectifs de la notification

Compte tenu des centaines de carreaux app live tout en assurant en même temps qu'aucune dégradation des performances ne permet de croire que nous avons des objectifs contradictoires. Après tout, une « activité » par définition consomme des ressources. Obtenir une notification du nuage utilise le réseau. Rendre la notification sur la dalle utilise des ressources du processeur. Afin d'obtenir la conception droite, nous avons dû rester concentrés sur les objectifs que nous avons commencés avec :

  • Permettre à des centaines de carreaux vivants sans dégrader les performances
  • Dépasser les ballons, les insignes et texte, avec des images attrayantes
  • Rendre facile pour les développeurs afin qu'ils peuvent juste « fire and forget »
  • Assurer une prestation en temps réel donc livrer « messagerie instantanée » est instantanée

Basé sur ces objectifs, la première décision architecture fondamentale est que la plate-forme serait piloté par les données. Aucun code d'application ne doit exécuter en arrière-plan pour alimenter l'écran de démarrage. Si vous pensez à l'anatomie d'un système de notification de livraison, il s'agit de plusieurs pièces. Il est logique pour savoir quand se connecter, l'authentification, la mise en cache locale, rendu, gestion des erreurs, recul des algorithmes, la limitation et ainsi de suite. Le système doit aussi traiter des questions de côté service comme savoir lorsque vous êtes connecté. Il doit être en mesure de mettre en cache contenu non remis et de gérer des scénarios complexes pour une nouvelle tentative.

Pouvez-vous imaginer si toutes les applications simples avec une tuile direct avaient sa propre version de tout ce code de client/serveur ? Non seulement aurait différents bogues dans chaque application, mais les doublons d'essentiellement le même code pour chaque $ $ etAPP est chargé en mémoire. Ce code serait constamment paginé et sortir le disque. Ce serait plus inefficace, car tous vos apps s'exécuteraient tout le temps à entretenir l'écran de démarrage. Même sur une machine avec beaucoup de mémoire, les performances du système seraient éventuellement broyer à un rampement.

Si vous augmentez le nombre de processus, les dll et les services qui s'exécutent en même temps, les performances se dégradent. Si chaque tuile direct courait avec son propre code, le but de permettre à des centaines de carreaux vivants sans dégrader les performances serait impossible. La solution était de construire un modèle piloté par les données.

Cela signifie qu'un développeur d'application peut exprimer sa tuile à l'aide d'un ensemble de propriétés prédéfinies et des modèles. Dans ce cas, il utilise un schéma XML. Les données de tuile XML sont ensuite envoyées à Windows Push Notification Services (WNS) via un POST HTTP simple et Windows 8 s'occupe du reste. Tout le code de connexion, une nouvelle tentative, authentification, la mise en cache, rendu et la gestion des erreurs est fait de façon uniforme et économes en énergie.

La décision d'utiliser un modèle piloté par des données nous a aidés à atteindre les deux premiers buts de performance et une expérience de haute fidélité. Mais le défi de déterminer comment atteindre la livraison en temps réel et efficacité de feu-et-oublier-il restait encore.

Sondage et push

Il existe deux modèles de conception de haut niveau avec la diffusion de contenu client/serveur, d'interrogation et de pousser. Interrogation des moyens, que le client vérifie le service sur une base régulière (par exemple, toutes les 90 minutes) pour rechercher de nouveaux contenus. Push signifie que lorsqu'il y a des nouveaux contenus, le service envoie les données vers le client directement.

La seule façon de prendre en charge des notifications instantanées avec un modèle de bureau de vote serait de sondage sur une fréquence suffisamment élevée (par exemple toutes les 5 secondes). De cette façon, si un nouveau message est arrivé, vous verrez elle instantanément. Mais cela tuerait si le niveau de performance. Avec un intervalle d'interrogation de 5 secondes, la pile de réseau radio ne serait jamais ralentie, autonomie de la batterie serait horrible et ordinateurs de bureau devrait toujours être mis sous tension.

Il serait un peu comme parler sur votre téléphone portable tout au long de la journée. Votre batterie ne durerait pas longtemps. En plus de cela, il serait extrêmement peu rentable vérifier le serveur toutes les 5 secondes pour le contenu, car la plupart du temps qu'il n'y aurait rien de nouveau. Historiquement, les notifications de la barre d'état système et les gadgets du bureau introduits dans Windows Vista ont utilisé un mécanisme d'interrogation. Avec n'importe quel mécanisme d'interrogation, cependant, l'intervalle n'est pas assez court pour les services en temps réel d'aujourd'hui.

C'est pourquoi Windows 8 utilise un service de type push. Il s'agissait d'une grande décision parce que cela signifiait que la plate-forme a été construite à l'échelle mondiale, par la suite alimenter les tuiles pour des centaines de milliers d'apps et de plus de 1 milliard de personnes. La valeur était claire. Les développeurs obtiendrait des notifications en temps réel efficaces à leurs clients gratuitement, sans avoir à créer ou maintenir des connexions persistantes sur le client.

La plateforme de push

Prenons regarder de plus près les différents composants de la plate-forme afin d'expliquer certaines des parties plus subtiles de la conception. Il existe trois entités principales :

  1. **WNS :**Ce pouvoir vivre les tuiles et les faire griller notifications.
  2. **Service de l'app :**C'est le service de Web apps s'exécute et les notifications toast envoie et les tuiles mises à jour via WNS. Un exemple de ceci serait le service back-end pour l'app météo fourni dans le Developer Preview, ou un service de back-end hébergement photos pour une application de réseautage sociale.
  3. **Plate-forme de client de Windows 8 :**Il s'agit de la réelle PC et sous-composants dans le système d'exploitation qui forment les éléments nécessaires à l'expérience de bout en bout.

Voici un scénario courant pour illustrer comment cela fonctionne. Supposons qu'un service d'application est un site de réseautage social qui envoie une mise à jour de la tuile quand quelqu'un commentaires sur photo. Cela pourrait tout aussi bien être une application LOB qui vous met à jour avec nouvelles affectations ou lorsqu'un rapport de dépenses a besoin d'attention. Lorsqu'il y a une mise à jour, le service app envoie une notification au WNS.

De là, le WNS pousse la notification vers le bas pour le client. Quand il est temps de montrer la mise à jour de mosaïque sur l'écran de démarrage, le système d'exploitation lit cette image dans le service app basé sur l'URL dans la notification XML. Une fois que la déclaration et les images sont téléchargées, le $ $ etAPP rend la tuile direct basée sur le modèle spécifié dans le fichier XML et présente sur l'écran de démarrage.

Pour faire de ce véritable « fire and forget » — et à faire en sorte que les développeurs n'avait pour le complexe cache d'écriture, puis réessayez de mécanismes pour lorsque le PC n'est pas connecté, en cache une seule notification par $ $ etAPP dans le nuage WNS jusqu'à la prochaine fois que le PC est en ligne.

Comme nous avons conçu les composants de plateforme de clients, nous avons voulu s'assurer que tout a été conçu pour hautes performances et faible consommation d'énergie. L'un des éléments clés de ce était séparer la charge utile de notification de charge utile de l'image. Une notification de type XML est inférieure à 1 Ko de données. Une image peut être inférieure à 150 Ko. Séparant ceux-ci nous a aidés à économiser la bande passante réseau considérable pour les scénarios où il y a beaucoup de duplication de l'image.

Par exemple, l'image de la dalle peut être une photo de profil d'un ami. Votre PC peut télécharger une seule fois et l'ai mis en cache localement. Séparant la notification de l'image nous aide d'intelligemment de jeter des notifications non utilisées avant de télécharger l'image. Si un écran de l'appareil est éteint, il est inutile de télécharger des images des tuiles qui remplacera seulement les mises à jours avant la prochaine fois que l'appareil est utilisé.

Le modèle d'authentification

Étant donné que les notifications et les carreaux vivants représentent un élément clé de l'expérience de l'application, il est important que les canaux de communication sont authentifiée et sécurisée. Par conséquent, Windows 8 utilise un mécanisme d'authentification anonyme qui identifie la connexion entre le PC et le WNS. Applications et services app également authentifient lorsque vous communiquez avec WNS.

Authentification des connexions à WNS contribue à protéger contre la mise à jour live tile, tels que les attaques par usurpation. Le mécanisme d'authentification que WNS utilise explicitement lie l'application et le service. Qu'il le fasse d'une manière qui empêche d'autres applications (ou individus) d'envoyer du contenu vers une tuile qu'ils ne possèdent pas. Et naturellement, toutes les communications sont déroule sur un canal sécurisé.

Cela fonctionne si oui ou non vous êtes connecté à Windows à l'aide d'un identifiant Windows Live ID. Windows 8 est préférable lorsque vous avez un compte connecté, puisque vous aurez accès aux améliorations telles que le stockage en nuage app ; itinérance Windows et paramètres de l'application ; et single sign-on aux applications multiples. La plate-forme de notification push utilise un mécanisme d'authentification anonyme, donc même que si vous signez un identifiant Windows Live ID, le développeur de l'application ne peut pas utiliser le pipeline de notification pour trouver votre identifiant Windows Live ID, information sur le système ou l'emplacement.

Bâtiment à l'échelle

La plate-forme doit prendre en charge un nombre incroyablement élevé d'utilisateurs et d'applications. Au cours de la phase de développement pré-bêta, nous envoyions déjà mises à jour de tuile presque 90 millions par jour. L'app de Stocks est l'un des populaires testez des applications à partir de la version Developer Preview. Quand la Developer Preview a été libérée, nous avons regardé attentivement le trafic à travers les centres de données pour surveiller la montée en puissance.

La conception WNS est basée sur l'architecture du service Windows Live Messenger. En fait, la partie de service de la plate-forme de notifications a été construite par la même équipe. Voici quelques chiffres pour vous donner une idée de l'échelle de la fonction de Windows Live Messenger aujourd'hui :

  • 300 millions d'utilisateurs mensuels actifs
  • 630 millions de connexions quotidiennes
  • notifications quotidiennes 10 milliards
  • Plus de 40 millions maximum de connexions en ligne simultanée (CPS)
  • Plus de 3 000 machines de routage des messages dans le monde entier

Afin de surveiller de près les performances de la plateforme de notifications, nous avons ajouté des métriques dans le nouveau gestionnaire de tâches pour vous permettre de garder une trace de combien de bande passante consomme la plate-forme de tuile pour chaque application. Utilisation des ressources pour les carreaux doit être relativement faible.

Dans Windows 8, nous avons entrepris de concevoir une plate-forme de notifications qui fournirait des informations en un clin de œil, sans toutes les performances et la batterie vie préoccupations auxquels sont confrontés les modèles traditionnels de plug-in et gadget. À cette fin, chaque décision de conception, que nous avons fait était considérée sous l'angle de l'efficacité de vie de performance et de la batterie.

Pour le rendre facile pour les développeurs d'applications de participer, nous avons construit WNS afin que les développeurs pourraient créer live tiles sans devoir écrire du code de la connectivité réseau compliqué. WNS utilisant des technologies Web standard tels que HTTP POST, il est facile pour les développeurs d'intégrer des notifications en fonction de leurs services Web existants.

Le résultat est une plateforme de notifications qui fournit des informations en un clin de œil. Pourtant, vous pouvez toujours installer des apps autant que vous le souhaitez sans vous soucier de l'impact sur la vie de performance ou de la batterie.

Ryan Haveson

Ryan Haveson a plus de 15 années d'expérience des équipes d'ingénieurs et de fournir des logiciels et services pour certaines des marques plus reconnues du monde, y compris la Xbox et Windows. Il a été un chef de groupe dans l'équipe de l'expérience de Windows pour Windows 8. Lui et son équipe conçu et livré à l'utilisateur et développeur orienté caractéristiques, y compris la plate-forme de notifications de carreaux vivants et le nouveau gestionnaire des tâches. Il dirige actuellement le groupe d'ingénierie des systèmes chez Qualcomm Inc. pour le Windows/Windows Phone sur division Snapdragon à sunny San Diego. Le joindre à ryanhaveson@hotmail.com ou à linkedin.com/in/ryanha

Contenu associé