-Steven Sinofsky
Kita semua tahu bahwa kinerja dan daya tahan baterai adalah sangat penting untuk rilis sukses dari Windows, dan komentar Anda terus menekankan atribut-atribut. @ KISSmakesmeSMILE menyimpulkan dengan baik dengan menulis:
"... Coba cocok atau lebih baik lagi, melebihi ... [pesaing] prestasi runtime baterai lampu / rendah menggunakan load."
Pada saat yang sama, kita tahu bahwa semua lingkungan modern (dari PC ke TV untuk ponsel) memiliki beberapa bentuk dari gadget, widget, atau plug-in model yang memungkinkan di-a-sekilas konsumsi informasi. Menonton berita TV, olahraga, atau cuaca menunjukkan layar terstruktur informasi dengan banyak sumber datang bersama-sama secara real time. Orang-orang berharap untuk dapat segera memeriksa saham mereka, cuaca, jumlah email, pertemuan berikutnya, baris status bisnis, atau bahkan status jaringan sosial dalam hitungan detik sebelum mendapatkan hak kembali ke apa pun yang mereka lakukan. Dalam banyak hal, orang bisa berdebat PC memiliki beberapa penangkapan hingga dilakukan di daerah ini dibandingkan dengan perangkat lain. Ketika kami berangkat untuk desain infrastruktur pemberitahuan kami, tantangan kita adalah dalam bagaimana membuat PC merasa hidup dengan aktivitas dan tetap sangat efisien sehubungan dengan kekuasaan dan penggunaan bandwidth. Kata-kata @ AndyCadley ekspres tujuan baik:
"Perlakukan semua Anda" Metro "aplikasi seolah-olah mereka selalu berjalan (tetapi pada nol dampak ke baterai / kinerja)"
Layar Mulai juga membuat efisien ini dari perspektif model pengguna dengan memberikan Anda sebuah layar penuh kepala up display tanpa mengganggu aplikasi desktop Anda atau Metro gaya sambil Anda berfokus pada mereka. Selain itu, tidak hanya kita ingin membuatnya efisien, kami ingin memastikan bahwa Anda bisa menginstal aplikasi memberitahu sebanyak yang Anda inginkan, tanpa harus khawatir tentang dampak pada kinerja atau hidup baterai.
Satu hal yang kita perhatikan seperti kita menggunakan Windows 8 internal adalah bahwa kemampuan untuk menggunakan layar Mulai sebagai kepala terpadu dan sangat mudah dibaca up display untuk line-of-aplikasi bisnis telah menjadi peningkat produktivitas. Kami melihat banyak kepentingan dalam aplikasi yang terutama tentang pemberitahuan. Dengan skalabilitas platform kami dorongan baru pemberitahuan, Windows 8 dapat memberikan kemampuan ini dengan dampak sistem minimal, yang merupakan perbaikan besar atas banyak mekanisme yang ada di Windows saat ini. Hal ini tidak sulit untuk melihat sebuah skenario, terutama sejak dini, di mana bahkan yang paling hardcore desktop hanya orang akan menemukan banyak nilai di layar Mulai sebagai area (dan dikendalikan) pemberitahuan terpusat dan disajikan dengan baik yang hanya keystroke pergi.

Tujuan dari platform pemberitahuan

Membiarkan ratusan ubin app untuk hidup dengan aktivitas, dan sekaligus memastikan bahwa kita tidak menurunkan kinerja membuatnya tampak seperti kita memiliki tujuan yang saling bertentangan. Setelah semua, "aktivitas," menurut definisi, mengkonsumsi sumber: mendapatkan pemberitahuan dari awan menggunakan jaringan, dan rendering pemberitahuan pada ubin menggunakan GPU / CPU sumber daya, dll Dalam rangka untuk mendapatkan desain yang tepat, kami tahu kami harus untuk tetap fokus pada tujuan kita mulai dengan:
  • Biarkan ratusan ubin hidup tanpa menurunkan kinerja
  • Melampaui balon, lencana dan teks, dengan gambar yang indah
  • Buatlah mudah bagi pengembang sehingga mereka hanya bisa "api dan lupa"
  • Mencapai real-waktu pengiriman sehingga menyampaikan "pesan instan" adalah instan
Berdasarkan tujuan ini, keputusan pertama arsitektur mendasar yang kami buat adalah bahwa platform akan data-driven, yaitu, tidak ada kode aplikasi harus dijalankan di latar belakang untuk menyalakan layar Mulai.
Jika Anda berpikir tentang anatomi sistem pengiriman pemberitahuan, melibatkan beberapa bagian: logika untuk saat untuk menghubungkan, otentikasi, caching lokal, render, penanganan error, back-off algoritma, throttling, dll Selain itu, sistem harus menangani dengan layanan-sisi isu seperti mengetahui kapan Anda terhubung atau tidak, sehingga dapat cache konten tidak terkirim dan menangani skenario kompleks untuk mencoba kembali. Dapatkah Anda bayangkan jika setiap aplikasi tunggal dengan genteng hidup memiliki versi sendiri dari semua kode klien / server? Tidak hanya akan Anda memiliki bug yang berbeda dalam pelaksanaan masing-masing, tetapi Anda akan memiliki duplikat dari dasarnya kode yang sama untuk setiap aplikasi dimuat dalam memori, dengan kode yang terus-menerus paged masuk dan keluar ke disk. Ini akan sangat tidak efisien karena itu berarti semua aplikasi Anda akan berjalan sepanjang waktu untuk menjaga layar Mulai hidup. Bahkan pada mesin dengan banyak memori, kinerja sistem pada akhirnya akan menggiling untuk merangkak.
Jika Anda membaca posting Bill Karagounis tentang bagaimana kita mengurangi jejak memori pada Windows 8, Anda tahu bahwa degradasi kinerja ketika Anda meningkatkan jumlah proses, DLL, jasa, dll yang berjalan. Jika setiap ubin hidup adalah berjalan dengan kode sendiri, kita tidak akan mampu mencapai tujuan pertama kami memungkinkan ratusan ubin hidup tanpa menurunkan kinerja.
Solusi kami adalah untuk membangun model data-driven. Ini berarti bahwa pengembang dapat mengekspresikan ubin mereka menggunakan seperangkat sifat yang telah ditetapkan dan template, dalam hal ini, menggunakan skema XML. Data ubin XML ini kemudian dikirim ke Push Windows Pemberitahuan Layanan (WNS) melalui HTTP POST sederhana dan kemudian kita mengurus sisanya. Semua kode untuk menghubungkan, mencoba kembali, otentikasi, caching, rendering, penanganan error, dll dilakukan dalam seragam dan kekuasaan-efisien cara.
Berikut adalah contoh dari salah satu dari banyak template ubin yang pengembang dapat digunakan untuk aplikasi Windows 8 mereka. Yang satu ini terdiri dari kolom teks dan gambar tunggal, tetapi ada banyak template lain untuk memilih dari.
Image of a surfer, with RSS feed icon, and text "First ever surfboard kickflip recorded in Santa Cruz"
Gambar 1: Contoh Template ( TileWideImageAndText )
Berikut adalah kode XML yang sesuai yang menggambarkan ubin di atas:
  <Xml version = "1. 0" encoding = "utf-8"??> 
  <Genteng> 
  <Visual yang lang = "en-US"> 
  <Template yang mengikat = "TileWideImageAndText"> 
  <Gambar id = "1" src = "http://www. Fabrikam com / Kickflip.. Png" /> 
  <Teks id = "1"> Pertama papan selancar Kickflip pernah dicatat di Santa 
  Cruz </ teks> 
  </ Binding> 
  </ Visual> 
  </ Genteng> 
Keputusan untuk menggunakan model data-driven memungkinkan kami untuk mencapai dua tujuan pertama (kinerja dan pengalaman high-fidelity), tapi kami masih harus mencari cara untuk mencapai real-waktu pengiriman dan api-dan-lupa-itu efisiensi .
Ada dua pola desain tingkat tinggi dengan klien / server konten pengiriman:. Pemungutan suara & mendorong Polling berarti bahwa klien dengan layanan cek secara teratur (misalnya setiap 90 menit) untuk melihat apakah ada konten baru push berarti. bahwa ketika ada konten baru, layanan mengirimkan data ke klien secara langsung.
Satu-satunya cara untuk mendukung pemberitahuan instan dengan model pemungutan suara akan jajak pendapat pada frekuensi yang cukup tinggi (seperti setiap 5 detik), jadi jika pesan baru diterima, Anda akan melihat cukup banyak langsung. Namun hal ini akan membunuh tujuan-dengan kinerja kami interval polling 5-detik, stack jaringan radio tidak akan pernah menganggur, baterai akan mengerikan, dan mesin desktop akan selalu menyala. Ini akan menjadi sedikit seperti berbicara di telepon seluler Anda sepanjang hari-baterai telepon Anda tidak akan bertahan lama. Di atas itu, akan sangat boros untuk memeriksa server setiap 5 detik untuk konten, karena sebagian besar waktu akan ada sesuatu yang baru. Secara historis, pemberitahuan baki sistem dan Gadget desktop yang diperkenalkan di Vista telah dilaksanakan dengan menggunakan mekanisme pemungutan suara. Namun dengan mekanisme pemungutan suara, interval masih belum cukup pendek untuk real-time saat ini layanan yang instan.
Jadi, untuk Windows 8 kita architected layanan berbasis push. Ini adalah keputusan besar karena itu berarti kita harus membangun platform di skala global, akhirnya powering ubin selama ratusan ribu aplikasi dan lebih dari satu miliar orang. Tetapi nilai itu jelas: pengembang akan mendapatkan super-efisien real-time pemberitahuan kepada pelanggan mereka secara gratis, tanpa harus membangun atau mempertahankan hubungan mereka sendiri gigih untuk klien.

Platform mendorong pemberitahuan

Mari kita lihat lebih dekat pada berbagai komponen platform untuk menjelaskan beberapa bagian yang lebih halus dari desain. Dalam diagram di bawah Anda melihat tiga entitas kunci:
  1. Jendela Push Notification Service (WNS): ini kekuatan hidup ubin dan pemberitahuan roti panggang.
  2. Aplikasi Layanan: Ini adalah layanan web yang aplikasi gaya Metro berjalan (misalnya dari situs web yang ada mereka), yang mengirimkan roti panggang dan update pemberitahuan melalui WNS genteng. Contoh ini akan menjadi layanan back-end untuk aplikasi Cuaca yang dikirimkan dalam Pratinjau Pengembang , atau foto layanan back-end hosting untuk aplikasi jejaring sosial.
  3. Windows 8 platform klien: ini merupakan PC aktual dan sub-komponen dalam OS yang membentuk pipa untuk pengalaman end-to-end.
Three graphics shown: App Back-End Service, Windows Push Notification Service (WNS), (which also contains a "Cache"), and Windows 8 Client Platform (which also contains "Tile renderer," "Image Cache" and "WNS Connection" boxes). An arrow marked "1. Push notification" points from App Back-End Service to WNS. Arrow marked "2. Notification" points from WNS to the WNS Connection on the Client Platform. A bi-directional arrow marked "3. Fetch images" runs between App Back-End Service and the Image Cache on the Client Platform.
Gambar 2: Platform pemberitahuan push
Mari kita berjalan melalui sebuah skenario penggunaan khas untuk menggambarkan bagaimana ini bekerja. Misalkan bahwa layanan aplikasi adalah situs jejaring sosial yang mengirim update genteng ketika seseorang komentar pada foto Anda (ini bisa saja menjadi garis dari aplikasi bisnis yang update saya ketika sebuah bug ditugaskan kepada saya atau laporan pengeluaran kebutuhan perhatian untuk misalnya). Ketika ada update, layanan aplikasi mengirimkan pemberitahuan kepada WNS (Langkah 1 dalam diagram di atas). Dari sana, WNS mendorong pemberitahuan ke klien (Langkah 2). Ketika saatnya untuk menunjukkan update ubin pada layar Mulai, OS mengambil gambar yang dari layanan aplikasi berdasarkan pada URL yang terkandung dalam XML pemberitahuan (Langkah 3). Setelah pemberitahuan dan gambar di-download, aplikasi membuat ubin hidup berdasarkan template yang ditetapkan dalam XML, dan menyajikan pada layar Mulai.
Seperti yang dinyatakan sebelumnya, salah satu tujuan kami adalah "api dan lupa." Jadi, untuk memastikan bahwa pengembang tidak perlu menulis cache kompleks dan coba lagi mekanisme untuk ketika PC tidak terhubung (misalnya jika itu adalah laptop yang sedang tidur), kami Cache salah satu pemberitahuan per aplikasi di awan WNS sampai waktu berikutnya bahwa PC sedang online.
Seperti yang kita dirancang komponen klien platform, kami ingin memastikan bahwa semuanya direkayasa untuk kinerja tinggi dan konsumsi daya rendah. Salah satu bagian kunci dari ini adalah memisahkan muatan payload pemberitahuan dari gambar. Sebuah XML pemberitahuan khas adalah kurang dari 1KB data, tapi gambar bisa sampai 150KB. Memisahkan ini memungkinkan kami untuk menghemat bandwidth jaringan yang signifikan untuk skenario di mana ada banyak duplikasi gambar. Sebagai contoh, gambar untuk ubin mungkin gambar profil seorang teman, yang PC Anda dapat men-download sekali dan cache lokal untuk digunakan kembali. Memisahkan pemberitahuan dari gambar juga memungkinkan kami untuk menjadi pintar tentang pemberitahuan membuang yang tidak terpakai sebelum kita pergi melalui biaya men-download gambar. Jika layar perangkat saya mati dan duduk di kamar saya sementara saya bekerja, tidak ada gunanya men-download gambar untuk ubin yang hanya akan digantikan oleh pembaruan berikutnya sebelum waktu berikutnya saya menggunakan perangkat.

Model otentikasi

Karena ubin hidup dan pemberitahuan merupakan bagian penting dari pengalaman aplikasi, penting bahwa saluran komunikasi adalah otentik dan aman-semua jalan dari layanan aplikasi ke ubin pada layar Start Anda. Ini akan sangat buruk jika sebuah aplikasi atau layanan web nakal hanya bisa update setiap ubin pada mesin Anda. Untuk alasan itu, kita menggunakan mekanisme otentikasi anonim yang secara unik mengidentifikasi koneksi antara PC dan WNS. Aplikasi dan layanan app juga mengotentikasi ketika berkomunikasi dengan WNS. Otentikasi kedua koneksi ke WNS membantu melindungi terhadap penyalahgunaan update genteng hidup, seperti serangan spoofing. Mekanisme otentikasi yang digunakan oleh WNS eksplisit hubungan aplikasi dan layanan bersama dalam sebuah cara yang membuat aplikasi lain (atau orang jahat) dari mengirimkan konten ke ubin yang mereka tidak sendiri. Dan tentu saja, semua komunikasi berlangsung melalui saluran aman.
Semua ini bekerja terlepas dari apakah Anda masuk ke Windows menggunakan Windows Live ID. Tentu saja, sebagai Katie Frigon bicarakan di posting nya di sign in dengan Windows Live ID , Windows 8 terbaik adalah ketika Anda memiliki account terhubung karena memungkinkan banyak pengalaman ditingkatkan seperti awan penyimpanan aplikasi, jelajah pengaturan Windows dan aplikasi, dan single sign-on untuk beberapa aplikasi. Karena platform notifikasi push menggunakan mekanisme otentikasi anonim, bahkan jika Anda masuk dengan Windows Live ID, pengembang aplikasi tidak dapat menggunakan pipa pemberitahuan untuk menemukan Windows Live ID, info sistem, atau lokasi.

Membangun layanan untuk skala

Sebelumnya di posting ini kita menyebutkan bahwa kita harus insinyur platform untuk mendukung jumlah sangat besar pengguna dan aplikasi. Untuk memberikan gambaran tentang skala ini, grafik di bawah ini menunjukkan jumlah pemberitahuan bahwa aplikasi mengirim ke Windows 8 per hari. Sampai beberapa minggu lalu, kami sudah mengirimkan pembaruan genteng hampir 90 juta per hari, dan kami tidak bahkan pada beta belum!
Graph shows notifications at 0 on 9/12/2011, spiking to about 64 million on 9/16/2011, dropping back to 36 million on 9/18, and gradually climbing to the 80 to 85 million range in early October.
Gambar 3: Pemberitahuan per hari dikirim ke Windows 8 Pratinjau Pengembang membangun
App Saham adalah salah satu aplikasi populer dari test drive Pratinjau Pengembang membangun. Grafik berikut menunjukkan jumlah ubin hidup terdaftar dengan aplikasi ini di bulan pertama sejak rilis Pratinjau Pengembang membangun.
Total live tiles for Stocks app
Gambar 4: ubin Hidup terdaftar ke aplikasi Pengembang Saham Preview
Ketika Pratinjau Pengembang dirilis, kami mulai mengamati lalu lintas yang datang melalui pusat data, hati-hati pemantauan kami skala-out. Berikut ini adalah visualisasi dari distribusi geografis aktual pemberitahuan dalam beberapa hari pertama setelah Pratinjau Pengembang dirilis pada / / membangun. Perhatikan bahwa data merupakan unit per mil persegi dan dipasang ke skala logaritmik ke account untuk berbagai nilai kepadatan.

Download video ini untuk melihatnya dalam pemutar media favorit Anda:
MP4 berkualitas tinggi | MP4 berkualitas lebih rendah
Desain WNS didasarkan pada arsitektur layanan Windows Live Messenger, dan pada kenyataannya, bagian layanan dari platform pemberitahuan dibangun oleh tim yang sama. Tidak banyak tim di dunia dengan keahlian dan pengetahuan untuk dapat membangun layanan global scalable yang bisa jalan sampai ke nomor besar seperti begitu cepat. Berikut adalah beberapa statistik untuk memberikan gambaran tentang skala layanan Windows Live Messenger hari ini:
  • 300M aktif pengguna bulanan
  • 630m harian login
  • 10B harian pemberitahuan
  • Lebih dari 40M puncak SOC (koneksi online simultan)
  • Lebih dari 3000 mesin routing pesan di seluruh dunia

Transparansi dalam penggunaan sumber daya genteng melalui Task Manager

Kami begitu bergairah tentang aspek kinerja platform pemberitahuan yang kami menambahkan metrik dalam Task Manager baru untuk memungkinkan Anda untuk melacak berapa banyak bandwidth platform ubin mengkonsumsi untuk setiap aplikasi Anda. Secara umum, penggunaan sumber daya untuk ubin harus relatif rendah. Bagi Anda menjalankan Pratinjau Pengembang membangun, pergi ke tab sejarah app di Task Manager dan melihat kolom "Tiles" untuk melihat berapa banyak bandwidth setiap ubin hidup Anda telah dikonsumsi selama 30 hari terakhir.
Heat map of usage history of Metro style apps from 9/17/2011 to 10/17/2011. The "News" app shows 71.9 MB used for Network, 57.2 MB for Metered Network, but only 0.1 MB for Tiles. There are 18 apps listed, and all show either 0 or 0.1 MB usage in the "Tiles" column.
Gambar 5: Sumber Daya penggunaan ubin hidup ditunjukkan dalam sejarah aplikasi Task Manager

Ringkasan

Pada Windows 8, kami berangkat untuk merancang sebuah platform pemberitahuan yang akan memberikan sekilas-informasi, tanpa semua kinerja dan kekhawatiran bahwa wajah baterai Plugin tradisional dan gadget berbasis model. Untuk itu, setiap keputusan desain yang kami buat adalah dilihat melalui lensa kinerja dan efisiensi baterai. Untuk membuatnya mudah bagi pengembang aplikasi untuk berpartisipasi, kami membangun Push Windows Service Pemberitahuan sehingga mereka bisa menciptakan ubin hidup tanpa harus menulis kode jaringan konektivitas rumit. Dan karena WNS menggunakan teknologi web standar, seperti HTTP POST, mudah bagi pengembang untuk mengintegrasikan pemberitahuan berdasarkan layanan yang ada web mereka.
Hasilnya adalah sebuah platform pemberitahuan yang memberikan sekilas-informasi sementara memungkinkan Anda untuk menginstal aplikasi sebanyak yang Anda inginkan tanpa khawatir tentang dampak pada kinerja atau kehidupan baterai.
Sumber : http://www.ntcompatible.com