Windows 8: Animazione grazie ai riquadri

L'architettura basata sui dati di Windows 8 consente di eseguire numerose applicazione contemporaneamente, mantenendo prestazioni e durata della batteria.

Ryan Haveson

In questi giorni, solo su qualsiasi PC, laptop o ambiente mobile ha una qualche forma di gadget, widget o modello plug-in che ti dà informazioni at-a-glance. È possibile guardare la TV notizie, sport e meteo all'interno di uno schermo strutturato con molte fonti di dati che si uniscono in tempo reale. Pensate di essere in grado di controllare rapidamente il vostro stock, meteo, e-mail, appuntamenti o status anche sociale networking in una manciata di secondi prima di tornare a tutto quello che stai facendo.

Questo si traduce in una fuga massiccia su prestazioni e durata della batteria. In molti modi, si potrebbe sostenere che i PC moderni ha alcuni recuperando da fare in questo settore rispetto ai computer portatili e altri dispositivi mobili. Nel progettare l'infrastruttura delle notifiche in Windows 8, la sfida era come fare il PC sentire vivo con attività pur continuando ad operare in modo efficiente per quanto riguarda l'utilizzo della potenza e della larghezza di banda.

La schermata di avvio di Windows 8 rende questo tipo di funzionamento efficiente dal punto di vista utente dando un heads-up display full-screen senza interferire con altre applicazioni o sul desktop. Oltre a rendere efficiente, abbiamo voluto assicurarsi che si potrebbe installare apps notificanti come molti come si desidera, senza doversi preoccupare dell'impatto sulla vita delle prestazioni o batteria. È possibile utilizzare la schermata di avvio di Windows 8 come un heads-up display unificato e altamente leggibile per le applicazioni line-of-business (LOB). In questo modo, è diventato un potenziatore della produttività.

Con la scalabilità della nostra nuova piattaforma le notifiche push, Windows 8 in grado di fornire questa funzionalità con un impatto minimo del sistema. Anche la persona più hardcore solo desktop troverete un sacco di valore nella schermata iniziale come una area di notifica centralizzata, ben presentati e controllato che è un tasto.

Gol di notifica

Permettendo per centinaia di piastrelle app live garantendo contemporaneamente che degrado delle prestazioni non fa sembrare che abbiamo obiettivi contraddittori. Dopo tutto, un' "attività" per definizione consuma risorse. Ricevendo una notifica dal cloud utilizza la rete. La notifica su una piastrella di rendering utilizza risorse del processore. Al fine di ottenere il disegno a destra, abbiamo dovuto rimanere concentrati sugli obiettivi che abbiamo iniziato con:

  • Consentire centinaia di piastrelle dal vivo senza compromettere le prestazioni
  • Andare oltre il testo, con immagini attraenti, distintivi e palloncini
  • Rendere più facile per gli sviluppatori quindi si può solo "fire and forget"
  • Ottenere la consegna in tempo reale quindi consegna "istantanea dei messaggi" è istantaneo

Basato su questi obiettivi, la prima decisione architettonica fondamentale era che la piattaforma sarebbe stata data-driven. Nessun codice app deve essere eseguito in background per la schermata iniziale di potenza. Se pensi di anatomia di un sistema di recapito della notifica, si tratta di diversi pezzi. Non c'è logica per quando per la connessione, autenticazione, memorizzazione nella cache locale, rendering, gestione degli errori, back-off algoritmi, limitazione e così via. Il sistema ha anche a che fare con questioni sul lato servizio come sapere quando sei connesso. Deve essere in grado di memorizzare nella cache contenuto non recapitato e gestire scenari complessi per riprovare.

Vi immaginate se ogni singola app con una tegola dal vivo aveva una propria versione di tutto quel codice client/server? Non solo avrebbe diversi bug in ogni implementazione, ma duplicati di essenzialmente lo stesso codice per ogni app caricato in memoria. Tale codice sarebbe essere costantemente paging dentro e fuori il disco. Questo sarebbe più inefficiente, perché tutti i vostri apps sarebbe in esecuzione tutto il tempo per mantenere viva la schermata iniziale. Anche su una macchina con un sacco di memoria, le prestazioni del sistema sarebbero macinare alla fine di una ricerca per indicizzazione.

Le prestazioni si riducono quando si aumenta il numero di processi, dll e servizi in esecuzione contemporaneamente. Se ogni piastrella dal vivo era in esecuzione con il proprio codice, l'obiettivo di permettere a centinaia di piastrelle dal vivo senza degradare le prestazioni sarebbe impossibile. La soluzione era di costruire un modello di data-driven.

Questo significa che uno sviluppatore di app può esprimere la sua piastrella utilizzando un set di modelli e proprietà predefinite. In questo caso, utilizza uno schema XML. I dati XML di tegola sono poi inviati a Windows Push Notification Services (WNS) tramite un semplice HTTP POST e Windows 8 si prende cura del resto. Tutto il codice per la connessione, riprovare, autenticazione, caching, rendering e gestione degli errori viene eseguita in modo uniforme e consumo.

La decisione di utilizzare un modello basato su dati ci ha aiutato a realizzare i primi due gol di prestazioni e un'esperienza ad alta fedeltà. Ma la sfida di determinare come conseguire la consegna in tempo reale e l'efficienza di fuoco-and-forget-it è rimasto ancora.

Sondaggio e push

Ci sono due modelli di progettazione ad alto livello con consegna di contenuti client/server — polling e spingere. Significa che il client controlla con il servizio su base regolare (per esempio, ogni 90 minuti) per controllare i nuovi contenuti di polling. Push significa che quando c'è il nuovo contenuto, il servizio trasmette i dati verso il cliente direttamente.

L'unico modo per supportare le notifiche istantanee con un modello di polling sarebbe a sondaggio su una frequenza sufficientemente alta (ad esempio ogni 5 secondi). In questo modo, se è arrivato un nuovo messaggio, vedreste istantaneamente. Ma facendo così avrebbe ucciso il livello delle prestazioni. Con un intervallo di polling di 5 secondi, lo stack di rete radio non sarebbe mai inattivo, la durata della batteria sarebbe orribile e macchine desktop sarebbero sempre acceso.

Sarebbe un po' come parlare sul tuo telefono cellulare all day long. Batteria del telefono non durò a lungo. In cima a quello, che sarebbe estremamente dispendioso controllare il server ogni 5 secondi per il contenuto, come la maggior parte del tempo che non ci sarebbe nulla di nuovo. Storicamente, le notifiche di sistema vassoio e gadget per il desktop introdotto in Windows Vista hanno utilizzato un meccanismo di polling. Con qualsiasi meccanismo di polling, però, l'intervallo è ancora non abbastanza breve per servizi in tempo reale di oggi.

Ecco perché Windows 8 utilizza un servizio di push-based. Questa è stata una grande decisione perché significava che la piattaforma è stata costruita a scala globale, alla fine, alimentando le piastrelle per centinaia di migliaia di applicazioni e più di 1 miliardo di persone. Il valore era chiaro. Gli sviluppatori sarebbero ottenere efficienti notifiche in tempo reale ai propri clienti gratuitamente, senza dover costruire o mantenere le connessioni persistenti al client.

La piattaforma di push

Diamo un'occhiata più da vicino i vari componenti della piattaforma di spiegare alcune delle parti più sottili del disegno. Ci sono tre entità principali:

  1. **WNS:**Questo poteri live tiles e tostare le notifiche.
  2. **Servizio App:**Questo è il servizio Web che corre apps e invia notifiche toast e tegola gli aggiornamenti via WNS. Un esempio di questo sarebbe il servizio di back-end per l'app meteo che spediti nell'anteprima dello sviluppatore o un servizio di back-end hosting foto per un app di social networking.
  3. **Piattaforma client Windows 8:**Questo rappresenta l'effettiva PC e sottocomponenti in OS che formano l'impianto idraulico per l'esperienza end-to-end.

Ecco uno scenario di utilizzo tipico per illustrare come funziona. Si supponga che un servizio di app è un sito di social networking che invia un aggiornamento di tegola quando qualcuno commenta su una foto. Questo potrebbe appena come facilmente essere un app LOB che si aggiorna con nuove assegnazioni o quando una nota spese ha bisogno di attenzione. Quando c'è un aggiornamento, il servizio app invia una notifica al WNS.

Da lì, WNS spinge la comunicazione verso il cliente. Quando è il momento di mostrare l'aggiornamento delle mattonelle nella schermata Start, il sistema operativo recupera quell'immagine dal servizio app basato sull'URL nella notifica XML. Una volta scaricati la notifica e l'immagine, l'app rende la piastrella live basata sul modello specificato nel XML e si presenta nella schermata Start.

Per rendere questo veramente "fire and forget" — e per assicurare che gli sviluppatori non hanno dovuto scrivere complesso di memorizzazione nella cache e riprova meccanismi per quando il PC non è collegato — abbiamo una notifica all'applicazione nel cloud WNS fino alla prossima volta che il PC è in linea di cache.

Come abbiamo progettato i componenti della piattaforma client, abbiamo voluto assicurare tutto ciò che è stato progettato per alte prestazioni e basso consumo energetico. Una delle parti fondamentali di questo fu che separa il payload di notifica dal payload di immagine. Una tipica notifica XML è meno di 1 KB di dati. Un'immagine può essere fino a 150 KB. Separando questi ci ha aiutato a risparmiare banda di rete significativa per gli scenari dove c'è un sacco di duplicazione di immagine.

Ad esempio, l'immagine di una tegola potrebbe essere una foto del profilo di un amico. Il tuo PC può scaricare questo volta e l'ho memorizzati nella cache locale. Separando la notifica dall'immagine ci aiuta a essere intelligenti su scartando le notifiche inutilizzate prima di scaricare l'immagine. Se un schermo del dispositivo è spento, non non c'è nessun punto nel download di immagini per piastrelle che appena saranno sostituiti da successivi aggiornamenti prima la prossima volta che il dispositivo sia utilizzato.

Il modello di autenticazione

Poiché le notifiche e le piastrelle dal vivo rappresentano una parte fondamentale dell'esperienza app, è importante che il canale di comunicazione è autenticato e sicuro. Pertanto, Windows 8 utilizza un meccanismo di autenticazione anonima che identifica univocamente la connessione tra il PC e WNS. Applicazioni e servizi app autenticano anche quando si comunica con WNS.

L'autenticazione sia le connessioni di WNS aiuta a proteggere contro l'abuso di aggiornamento live tile, quali attacchi di spoofing. Il meccanismo di autenticazione che WNS utilizza esplicitamente lega insieme l'applicazione e il servizio. Lo fa in un modo che mantiene altre applicazioni (o individui) di inviare contenuti a una piastrella che non proprio. E, naturalmente, tutta la comunicazione avviene su un canale protetto.

Questo funziona se non hai eseguito l'accesso in Windows utilizzando un Windows Live ID. Windows 8 è migliore quando si dispone di un account collegato, come avrai accesso a miglioramenti come archiviazione cloud app; Roaming Windows e le impostazioni dell'applicazione; e single sign-on per le applicazioni multiple. La piattaforma di notifica push utilizza un meccanismo di autenticazione anonima, quindi anche se accedi con un Windows Live ID, lo sviluppatore di app non è possibile utilizzare la pipeline di notifica per trovare il tuo Windows Live ID, informazioni di sistema o posizione.

Costruzione di scala

La piattaforma deve supportare un numero incredibilmente elevato di utenti e applicazioni. Durante la fase di sviluppo pre-beta, ci stavamo già inviare gli aggiornamenti di piastrelle quasi 90 milioni al giorno. L'app di scorte è uno dei popolari prova apps dalla compilazione del Developer Preview. Quando è stata rilasciata la Developer Preview, abbiamo guardato con attenzione traffico proveniente attraverso i centri dati per monitorare la scalabilità.

Il design WNS è basato sull'architettura di servizio di Windows Live Messenger. Infatti, la parte di servizio della piattaforma delle notifiche è stata costruita dallo stesso team. Qui ci sono alcune statistiche per darvi un'idea della scala del servizio Windows Live Messenger di oggi:

  • 300 milioni di utenti attivi mensilmente
  • 630 milioni di accessi giornalieri
  • notifiche giornaliere 10 miliardi
  • Più di 40 milioni di picco connessioni simultanee online (SOC)
  • Più di 3.000 macchine routing dei messaggi nel mondo

Per monitorare attentamente le prestazioni della piattaforma notifiche, abbiamo aggiunto metriche in nuovo Task Manager consentono di tenere traccia di quanta banda consuma la piattaforma di piastrelle per ogni app. Utilizzo delle risorse per le piastrelle dovrà essere relativamente basso.

In Windows 8, abbiamo impostato per la progettazione di una piattaforma di notifiche che fornirebbe informazioni at-a-glance, senza tutte le prestazioni e la batteria vita preoccupazioni che i modelli tradizionali basati su gadget e plug-in di fronte. A tal fine, ogni decisione di progettazione che abbiamo fatto venne visto attraverso la lente dell'efficienza vita prestazioni e batteria.

Per rendere più facile per gli sviluppatori di app per partecipare, abbiamo costruito WNS così gli sviluppatori potrebbero creare piastrelle dal vivo senza dover scrivere codice di connettività di rete complicata. Perché WNS utilizza tecnologie Web standard come HTTP POST, è facile per gli sviluppatori di integrare le notifiche basate sui loro servizi Web esistenti.

Il risultato è una piattaforma di notifiche che offre informazioni at-a-glance. Eppure è ancora possibile installare apps come molti come si desidera senza preoccuparsi dell'impatto sulla vita delle prestazioni o batteria.

Ryan Haveson

Ryan Haveson ha più di 15 anni di esperienza team leader progettazione e fornitura di software e servizi per alcuni dei marchi più riconosciuti del mondo, tra cui Xbox e Windows. Egli era un group manager del team di Windows Experience per Windows 8. Lui e il suo team progettato e consegnati per l'utente finale e sviluppatore rivolto caratteristiche, tra cui la piattaforma di notifiche live tile e il nuovo Task Manager. Egli è attualmente leader del gruppo Ingegneria sistemi presso Qualcomm Inc. per il Windows/Windows Phone su divisione Snapdragon nella soleggiata San Diego. Contattarlo al ryanhaveson@hotmail.com o a linkedin.com/in/ryanha

Contenuti correlati