Windows 8 程式開發模式之我見

Windows 8 程式開發模式之我見

最近研究了目前在BUILD 2011大會對於Windows 8的開發方式相關資料.底下為我的推測.這將會對未來Windows開發模式有著重要的改變.

(整篇文章都是自己的想法,如果有誤或不認同之處歡迎大家表達意見)

 

先來看下Windows 8目前的開發平台與架構圖

image_thumb_3

很明顯的未來在Windows 8有兩個不同的層級且兩者不能互通,也就是Metro應用程式與傳統Desktop應用程式(更廣義的說應該泛指目前所有Windows的開發模式).

Windows 8也提到

1.Metro介面並不是一個殼而已,而是一種新的架構直接與Kernel溝通,上方的圖表就可以看出此點,如果再進階點分析在Metro整體的架構上就是.Net應用程式,而WinRT API其實應該就是取代傳統Win32 API的.Net Runtime.所以在Metro模式下.Net已經直接掛於Kernel之上,而不需要再透過Win32,這點應該是這次Windows 8中最重大的改變.

2.Metro與Desktop介面可以做切換,其實也代表著另一種意思兩種應用程式無法同時共存,必須先切換成對應介面,且依照目前的彙整消息看來未來在手持裝置平台上應該只有Metro介面.

由這兩點大致上可以整理出一個方向.

Microsoft做了一個很大的嘗試,"模仿Apple的銷售模式".Metro介面並不只是一個介面上的改變而已,重點在於未來Metro的應用程式我個人推測非常有可能只能由Windows Store下載也就是微軟的App Store.

因為Metro介面的應用程式不能像傳統Desktop App一樣對Windows Kernel做操作(但微軟授權的廠商可以有限制的存取,對於某些AP有必要,譬如Driver,防毒軟體等).其實這種模式就是現在的Windows Phone 7的開發方式,只能使用Silverlight無法使用原生語言(Native Code),上圖左上的C/C++應該是指類似Managed c++的C++語言,而非Native Code的C/C++.

而此點可以從Metro的IE並不支援任何Plugin應用程式可看出,很明顯的Microsoft要避免任何由AP產生的漏洞而導致產生被破解(越獄)的方式.(雖然不可能完全防止,但這種方式至少有機制能夠彌補與防範).

而這種模式其實就是現在的Windows Phone 7模式.

大家都知道目前微軟在OS的營收上已經很難再做重大突破,而Apple的銷售模式給了微軟很好的啟發,Metro模式嚴格說起來就是在模仿Apple.希望從Windows Store模式下賺取軟體營收,畢竟已APP規模而言Windows還是遠遠大於Apple,如果這個策略成功了,將會使微軟帶來非常大的營收,且未來這隻金雞母會不停的孵蛋.
試想若Windows Store策略成功,以目前看來30%營收抽成的利潤有多高,所以Windows變為免費也不無可能,若真變為如此,微軟OS市佔率會吃到以往無法進入的市場,也就是目前Linux應用最懬泛的地方.

 

當然這種改變不可能是立即的,所以在Windows 8還是保留傳統Win32 App的相容模式也就是Desktop App.這樣做對於微軟而言也是另一種保障,若Metro模式失敗,至少現有的基礎不會消失.

以上是整體上的分析,那對於開發者而言有何改變?底下是我的看法

1.Desktop App還是像既有的Windows平台模式運作方式與開發方式不會有太大改變.若Metro成功,那未來Desktop APP會慢慢凋零.畢竟Metro模式才有能跨Device.

2.在Metro模式下,未來不要說flash無法運行像是Java runtime這類需要做較深入Kernel層級的程式,非常有可能也無法運作,除非微軟同意,但依目前情況應該是不太可能.說難聽點,在Metro模式下所有軟體要部屬都需要經過微軟認可.

這點也是我最不認同Apple App Store之處,但是它成功了….

3.對於微軟開發者而言,Metro帶來的改變是

.Net變成OS的基礎,所有開發都跟.Net有關.

Windows Form消失了,未來XAML是唯一的開發模式(或是直接用程式操控XAML).

對於Web開發者HTML 5是唯一能夠跨OS與Browser的開發放式.Silverlight未來會消失(這點後面有更詳細說明).

在Metro模式,未來的HTML配合JavaScript可能做到存取OS層級的作業也就是可以直接呼叫WinRT API,當然一定會有其安全限制,但這將會是未來一個很重要的特點.

對於Silverlight會消失的說法解釋

這點熟悉SL的人多多少少都應該知道,雖然微軟對外說明SL並不會消失而會繼續開發,這句話其實是對,也是錯.

熟悉SL的應該都了解SL目前的情況與當初的假設並不同,微軟想不到行動是裝置會發展如此之快,尤其是Apple與google的崛起,SL還尚未普及就先出現瓶頸,SL Runtime很難在各種Device裝置上實現,一來是受到技術上的限制,而另一個原因是這些OS都不是微軟自家產品,微軟無法掌控資源調度.

因此在去年微軟不小心說出HTML 5才是未來的主流,這其實是有道理的,深入了解HTML 5就會知道對於Browser UI而言以往的HTML限制大都已不存在,目前缺乏的強大與完整的開發工具與Library.唯一令人詬病的還是千年不死的濫Javascript.

因此在於Web, Silverlight前途已經渺茫.但不用傷心,Metro模式的出現代表著未來SL搖身變為OS層級的APP.部屬問題也經過Windows Store解決了.所以嚴格說起來SL更精進了,或是說他回歸本行.畢竟SL與WPF本來就是同一樣東西.

唯一令人傷心之處就是SL未來無法在跨平台,除非微軟肯繼續投資資源,但以這兩年的情況看來應該是不會繼續了,包含Toolkit,Ria Service已經都不再繼續更新.