01. Windows 8 APP 簡介

Attachment大小
Microsoft Office document icon Chapter1共筆.doc850.5 KB

 [共同筆記]Chapter1: The Life Story of a Windows Store App: Platform Characteristics of Windows

 

Windows Store應用的故事:Windows 8的平台特性

組員:資管四乙吳佩育、資管三乙林智婷、資管三乙陳伶貞

※本文章亦附在附加檔案的word中

 

目錄

一、Windows Store : 新手入門

二、發現、收購和安裝

三、在自己的房間玩: APP 容器

四、不同的生命觀:視圖狀態和分辨率縮放

五、再用這些功能:獲取數據和設備

六、休息一段時間,獲得一些休息:流程生命週期管理

七、記住你自己:應用程序狀態和漫遊

 

一、Windows Store : 新手入門

 

*當開發完一個app將他打包上傳至Visual Studio,而包裹(package)本身是一個appx file如下圖:

 

*它是一個簡單的壓縮檔,包含the app’s files (app的文件)and assets(資產), the app manifest(工具性質規定檔), a signature(署名檔), and a sort of table-of-contents called the blockmap(一連串表格內容的排序)

 

(1)   上傳app時,Visual Studio會幫你做初始的signature(署名),而在認證時Windows Store會幫你重新signature(署名)

(2)   Blockmap是在描述app如何被分成64k的區塊,它除了提供一定的安全功能(ex:檢測app是否被串改過)和性能的優化,他還可知道app哪區塊更新了,而他只需下載這個部分即可,幫使用者省下不少時間

 

*上傳的過程 將app命名 -> 選擇銷售細節 -> 提供說明和圖示 -> 寫文件讓測試員了解測試的步驟   (為了讓使用者對Windows Store上所有的app有信心)

 

 

補充說明:儲存api與產品模擬器

*Windows.ApplicationModel.Store.CurrentApp : 讓使用者可以從商店中取回自己app的資訊,並檢查許可狀態,和提式使用者進行購買(ex:升級體驗)

 

*Q:在儲存之前如何測試app ?

Ans:在開發過程中使用Windows.-ApplicationModel.Store.CurrentAppSimulator

(api)而它與CurrentProduct相同只差在他使用的是存在XML file的local data而不是存在雲上的data,而在打包儲存前只需將CurrentAppSimulator改成CurrentApp即可

 

 

 

 

二、發現、收購和安裝

 

*在Windows Store裡一個典型的app頁面,manifest決定了app的權限為何

*若使用者有任何疑問,開發者都應在app的描述中詳細描述

 

 

*Windows Store app的下載過程

 

*Windows Store app和一般軟體只能安裝在一個device上不一樣,它允許使用者將app裝在五個不同的device上

*也因為他知道安裝過程的一切,因此它可以100%回到初始設定

 

補充說明:什麼是Windows Library for JavaScript

*HTML, CSS, 和 JavaScript code在Windows Store app只有在執行(run time)時會被解析、編譯和提供,因此使用JavaScript寫的通常是透過Windows Library支援而不是Windows Runtime API

*WinJS是一個專給JavaScript 開發程式所專屬的API,而WinJS本身也有一套擴充機制可讓JavaScript在WinJS的環境中自行定義自己的命名空間、物件及函式等。

 

 

 

 

 

 

 

三、在自己的房間玩: APP 容器

 

*app主機可下載、呈現和執行HTML, CSS, and JavaScript,這與瀏覽器在執行web網頁大致相同

 

*app主機沒有像web網頁一樣的瀏覽器,而是在HTML/CSS/JavaScript 引擎上執行,兩者的不同還有:

 

(1) DOM API可被修改或不能使用決定於它的設計和系統的影響

 

(2) app主機有支援額外的方法屬性和css的查詢

 

(3)   在local context上執行用javaScript寫的 default page 可得到遠端的媒體,  但無法加載遠端的角本(script ),角本會自動過濾掉任何會影響DOM和開啟APP的攻擊

 

 

 

 

 

*所有可以儲存和執行APP的環境統稱為容器(container)

 

 

 *Windows Store apps的獨立程序

 

容器(container)的特性:

(1)   商店裡的所有APP都在特定的環境中執行,無法干擾其他APP也不會被其他APP干擾

(2)   Default者只能在特定APP文件夾裡無限制的讀和寫,若要在所有文件夾裡通行必須先經過經紀人(broker),守門人只會讓有特別標記會特定能力的人進入

(3)   感應設備(ex:相機、麥克風)若被經紀人(broker)阻擋則無法使用,必須去關建系統資源設定(ex:註冊表)

(4)   App無法直接用名稱或檔案路進呼叫另一個app而必須透過檔案或URI架構

(5)   儲存的APP會被隔離以避免被其他攻擊

(6)   APP和桌面的應用程式、當地的服務間是無法互相溝通的,除非透過雲(cloud )

 

 

 

 

 

 

 

四、不同的生命觀:視圖狀態和分辨率縮放

Different Views of Life: View States and Resolution Scaling

 

使用者第一眼看到──The app’s splash screen (APP的啟動畫面)

Win8則是創建一個擴展的啟動畫面

但Windows8能夠檢測邊緣手勢(Edge Gesture)顯示的每一個邊緣的像素的空間,而且並沒有讓用戶看到細節。

邊緣手勢的目的是,從邊緣滑動到中心時,保持兩種系統的Chrome和APP執行命令(像是使用者介面)直到一個層面──”content before chrome”。

 

 

Sidebar: Single-Page vs. Multipage Navigation

花絮:單頁和多頁導航

 

當寫一個HTML,CSS和JavaScript的Web應用程序時,與一些HTML頁面不同的是,它們之間導航是由使用<a href>標籤,或通過設置document.location。

但在Windows應用商店的應用程序,但它有幾個缺點。

其中之一是,頁面之間的連結時,會解析一個新的HTML文檔,解析和再次應用CSS。除了明顯的性能的影響,這使得它難以共享變數和其他頁面之間傳遞數據,因為你需要保存持久存儲中的數據或字符串數據,並把它傳遞的URL。

 

 

五、再用這些功能:獲取數據和設備

Those Capabilities Again: Getting to Data and Devices

許多這些功能及其相關的API在用戶隱私方面有沒有影響,所以應用程序能開放存取。

這些措施包括控制,觸摸/鼠標/手寫輸入,鍵盤輸入和傳感器(如加速度計,傾角傳感器和光線傳感器)。

AppData文件夾(本地,漫遊)所創建的應用程序在安裝時也公開。然而,更嚴格的控制,例如,作為一個人,他從家裡遠程工作,我真的不希望我的攝像頭打開,除非我明確告訴它!這些裝置和其他受保護的系統功能。

 

當用戶同意參與,調用一個API來訪問有問題的資源會提示用戶同意,如下圖所示。如果用戶接受,將繼續進行; API調用的API調用,如果用戶拒絕,將返回一個錯誤。應用程序必須準備API失敗時,作出相應的行為。

 

 

 

 

六、休息一段時間,獲得一些休息:流程生命週期管理

 

呼!我們已經討論了很多層面在第一章,而我們的應用程序一直在忙、忙、忙,我們甚至還沒有開始寫任何程式!

事實上,應用程序真正忙的時候,他們會實施某些協定。如果一個應用程序,聲明自己是在其清單(其中包括)搜索,分享,聯繫人或文件選取器目標,Windows將會讓應用程序回應到相應的用戶操作。例如,如果用戶調用分享的魅力,並挑選您的應用程序分享目標,Windows將激活該應用程序與指示該目的。當Windows關閉您的應用程序,則不會讓額外的用戶輸入(或將其發送到後台,如果它已經運行)

 

這種自動關機,或傳送到後台的應用程序的Windows Store應用程序的例子,有助於節省功耗和優化電池壽命自動生命週期管理。

傳統的多任務操作系統是,用戶通常會留下一堆運行的應用程序,所有這些都消耗功率。這與桌面應用程序的感覺,因為他們很多可以一次看到部分。但在儲存應用程序,系統更是大膽地考慮工作本身的優勢和使用這些應用程序的全屏性質。

應用程序通常需要忙碌運作,這樣才能讓用戶看到他們(在任何視圖狀態)。

當大多數應用程序都不再可見,僅需一點保持他們空轉更好,只是把他們關閉,給他們一些休息,讓可見的應用程序,更善加利用系統的資源。

 

 

 

此外,一個應用程序聲明後台任務在其清單綁在他們的代碼中的特定功能。在這種情況下,Windows會從暫停狀態中喚醒的應用程序,當出現一個合適的觸發。

 

除非用戶明確關閉的應用程序通過使用Alt鍵+ F4關閉視窗,這是Windows商店的政策,特別是不允許的應用程序與他們自己接近的命令或手勢,他們認為應用程序最好保持在運行。如果用戶再次使用它,他將期望能夠返回到前一刻離開的同一個地方,例如,一個遊戲應該是在同一個地方它是以前(雖然自動暫停),讀者應該在同一頁上,在同一時間,應暫停一個視頻。

 

 

 

 

 

七、記住你自己:應用程序狀態和漫遊

1.不同於傳統desktop applications,Windows store apps是stateful(啟動第一次之後,apps就會在跨越invocations時記住它們的state)

    (1.)對於user來說,apps總是一直執行,因此首先apps會針對有效的settings進行管理;此外,user希望當一個app被中斷又重開啟時,reload回的app會恢復到中斷前的位置,因此當apps被暫停時,apps也會儲存它們的session state。

 

    (2.)因為user可以在多達5個不同的裝置上install 相同的windows store app,這意味著在設計app時,會希望可以記錄不同裝置上的狀態,好讓user在這些裝置上能精確地取得同樣的位置,因此藉由automatically roaming app settings and state,讓User在這些裝置上能透過同一個Microsoft account來進行登入(Figure 1)

 

…Figure 1

備註;

Appdata folder;

    (1.)File system中可以不受限制進行存取的地方

    (2.)在app被下載時,會自動產生LocalState, RoamingState, and TempState三個不同的subfolders

    (3.)不僅可以隨時取得且產生新的files或subfolders,也是管理individual Local and Roaming settings的APIs

 

 

2. Device-specific中的任何settings、datd或resources都屬於local(Temp也是local);而代表使用者的interaction與app的設置,皆為roaming candidates

 

 

3. 比較Local Data和Temp Data

Local Data

Temp Data

* under the app’s control

*support an app’s functionality

*在user run the Disk Cleanup utility時可被刪除

*support run-time optimization at the expense of disk space

 

4. cross-device roaming aspect of the platform(平台跨設備漫遊);用戶的app’ collection與device應非常具有個人化的特色,因此利用跨平台設備的漫遊去開發一些超越單一device的apps,好讓apps是授權於user而不是device,讓使用者在某些device上用來intensive data entry 或生產工作,而在其他device上進行消費與共享的動作。

 

 參考資料:http://go.microsoft.com/FWLink/?Linkid=270056