2014年7月27日 星期日

Windows Phone 及 Windows Store 的 API 演進

日前 Windows Phone 已發佈 8.1 的 Developer Preview 版本,在 MSDN 上面可以看到一些關於 Phone 8.1 的新文章,另一方面在四月份的 Microsoft Bulid 2014 也發佈了新的 Windows 8.1 SDK,簡單的說最重點的一句話就是,目前 Phone 7 與 Phone 8 的 SDK 已確定將被新的 Windows Runtime SDK 所取代,也因為 Phone 從 7、8 到 8.1 可以說每一版的 SDK 都有不算小的變化,導致於網路上有許多名詞令用戶或開發者感到混亂,所以我想在這裡記錄一下就我從 Phone 7 就開始接觸到現在所了解的演進過程。

在 Windows Phone 推出時,第一版就叫 Windows Phone 7,當時 Microsoft 最新的 Windows 也是 7,在 Windows Phone 這個平台推出時,框架是使用 Silverlight,更嚴謹的說法是 Silverlight for Windows Phone,因為它並不是完整的 Silverlight,且又比 Silverlight 多了一些手持裝置該有的 API。

在 Windows Phone 7.5 推出升級後,加入了背景執行的支援,這時的框架仍然是 Silverlight for Windows Phone,在之後 Windows Phone 8.0 推出,當時市面上所有的 7.5 手機全部都沒辦法升級,因為微軟將作業系統的核心由較老舊的 Win CE 換成 Win NT 以利於未來功能的擴充,但 SDK 名稱依舊叫作 Silverlight for Windows Phone 8。

PS:Windows Phone 7.5 的手機其實可以升級到與 8.0 相似的新版作業系統 7.8 版,但 7.8 是當時市面上所有 Phone 7 所能升級的最後一版,幾乎找不到人討論這個版本。

Windows Phone 8.0 相較於 7 的時代對於解晰度、色彩等支援度更高,也開始支援多核心,對於開發者而言,最重要的是應用程式的生命週期更完善了,多了 Fast Resume 的支援,喚醒處於背景的應用程式不再像 Phone 7 一樣會重新啟動。

在 Microsoft Build 2014 之後,微軟宣佈 Windows 開發團隊與 Windows Phone 開發團隊將有更密切的共同開發合作,以微軟在 Windows 上的經驗幫助 Windows Phone 更完善,接下來關注 Windows Phone 發展的開發者大概都在第一時間讀了這篇文章:What's next for Windows Phone 8 developers

當時最令開發者興奮的除了所有 Phone 8.0 的裝置都能升級至 8.1 之外,還有一個新的開發框架叫 Universal Apps,透過 Universal Apps 的架構,可以在同一個 Solution 下開發 Windows App 及 Windows Phone App,Build 大會上也透露了 Universal Apps 除了可整合開發這兩個平台的應用程式之外,還可以整合開發 Xbox One 的應用程式。

但 Universal Apps 屬於 Store Apps 框架,也就是撰寫 Windows 8 的 Store App 所使用的 Windows Runtime 框架,常被簡寫為 Win RT。

也因為是擴充 Windows Runtime 框架,所以 Windows 8.1 與 Windows 8 其實沒有太大的差別,僅是新增了一些 API 及部份 Win RT API 的行為改變了。

而 Windows Phone 8.1 的改變就比較大了,雖然 Phone 8.0 皆能升級至 8.1 代表可相容,但在 Visual Studio 2013 內可以選擇兩種不同的框架來撰寫 Windows Phone 8.1 的應用程式,上面貼的那篇 MSDN 文章有提到:

Update to a Windows Phone Silverlight 8.1
這依然是舊的 Silverlight 框架,比起上面提到的 Silverlight for Windows Phone 8.0 多了一些 Phone 8.1 所提供的功能 API,但要做背景執行仍然很麻煩,且與微軟其他平台的相容性低,需要花人力額外維護這份特殊的程式碼。

Port to a Windows Phone Store
將 8.0 的 App 轉移至 Windows Store App 框架,也稱 Windows Runtime XAML App 或 XAML App 也很常有人這麼寫,這個新的框架下幾乎讓 Phone 8.1 支援大多數 Windows 8.1 的 API,且兩個平台的應用程式、頁面的生命週期也是相似的,更重要的是可以維護兩個 ( 或說三個 ) 平台共同使用的 Library。

上一段提到 Store Apps 利於我們維護兩個 ( 或說三個 ) 平台共同的 Library,原因是 Xbox One 目前在撰寫 Universal Apps 上僅支援使用 JavaScript,所以真的要享受到寫一份程式碼,執行在三個平台上,現階段只有選擇 JavaScript 專案可做到,一般 App 開發者所熟悉的 C# 尚無法支援開發 Xbox One。

再次整理一下

Silverlight for Windows Phone
這是指 7.0、7.5、7.8、8.0

Silverlight for Windows Phone 8.1
這是指上面框架升級至 8.1 專案

Windows Runtime
這是指 Windows 8 Store App 的框架

Store Apps
這是指基於 Windows Runtime 框架所建立的 Windows 或 Windows Phone 專案

XAML Apps
基於 Windows Runtime 框架所建立的 Windows Phone 專案的另一個常用名稱

Universal Apps
即是 Store Apps Solution,內含 Windows 及 Windows Phone 的 Project 及一個名為 Shared 的 Project 用來撰寫另兩個 ( 或三個 ) 平台共用的部份。



沒有留言:

張貼留言