close

⓪蕭沖 編著

話說自windows 8開始,在windows 8的應用程式大致上被分為二種: 一種就是「桌機」應用程式,這與過去的應用程式沒什麼大不同。另一種就是Metro-Style App。這種應用程式,目前正式的說法叫「Windows Store App」,因為metro style這個詞有一些法律上的問題。不過為了簡易一點的說明,以下我稱它叫 metro app。

先來說說 metro App 與傳統的desktop應用程式有什麼不同?  我個人覺得最主要的不同在於安全性。metro app與iphone上的app真的超像的,也就是app被局限在一個sandbox裡,不能隨意的存取他人的app或是重要的系統資源,比如說系統的根目錄等。metro app裡的目錄只有三個Local folder、Roaming folder 、Temp folder,因此想搞鬼太不容易,這點若有開發iphone app的人應該可以感受很深!  當然,metro app還有一個很大的不同,那就是外觀(UI),使用windows 8的介面後就會知道不同在哪裡…

ok,以上說了一堆,還是沒講到windows run time :p。總要有個前因嘛! 為了達到 metro app的風格、安全等等,當然相對的windows api就要有所改變,不然如何限制不能讀系統檔之類的,你說是吧?!  metro app 被限制要使用WinRT這個framework(我不稱它是api)來開發。

那麼WinRT的本質是什麼呢? 說到這裡,又不得要說它又像mac裡的cocoa framework。windows 8 以前,開發人員(非.net)都是和win32 api在打交道。而win32 api其實就是c   函式庫一樣的東西,非物件化、非階層化,像是倒滿地的一堆函式。為了要方便使用這些api,才有了borland的VCL或microsoft的MFC,這二個framework就是把win32 api包起來變成類別,方便開發使用。win32 api超過10年以上的歷史,於是這回microsoft就把這系統層級的api重新包裝起來,「並且考慮可能不同語言都會呼叫它」,加入一些安全機制等,於是就有了WinRT這個東西。它是一種framework,不是散落一地的函式庫。它是一種類似COM技術的包裝方式,所以不同的語言都可呼叫,它是native的碼,所以很快…。這樣的特性才讓我不禁覺得像極了mac上的cocoa framework,雖然cocoa不像com一樣,但在mac/iphone上開發程式就是要和cocoa打交道。

WinRT是nativ code,所以引來不少已立基在.net開發人員的疑慮 : 「.net 要死了嗎?」。我是不清楚未來的未來最後是否會死,但至少目前不是那樣的。因為metro app也像過去桌機應用程式一樣分為二類: 一 native metro app,二 managed metro app。我想這麼說應該就了解情形了吧!  native metro app是給 c++的人員使用 「c++/cx」(ms的新語言)或配合Windows Runtime C++ Template Library (WRL)來寫作。也因此最大的差異依舊是過去的「效能」問題,不能說是死或不死。只能說,過去有人傳言未來不會有win32api這種native的東西了,但事實是native又活了起來。這也讓我想到為何iphone的app也是使用native的,而android上的app相對的game等都比較慢… native 與 bytecode的戰爭感覺又有新局面。

我想,過去電腦病毒到處感染,但若未來windows store apps是下載的主要市場,配合WinRT的這種framewrok,應該可以有效的防護安全與個人隱私(對了,WinRT有一種service broker的功能,比如app要存取像機時,會問user可不可以,這又和iphone的安全機制一樣了 == )。這也許是mircosoft與apple學習??的作法。說到這兒,我不禁要題外話的說android手機真的很不安全,走的就是過去windows的路--完全開放系統,僅在下載app前問你同不同意存取什麼的,我想,極少數人會去看,於是就下載,然後就…隱私偷光光,不像剛我提到的iphone與winRT在run time時會問你是否同意之類的。

目前僅visual studio 2012版可以開發 metro app,其他的像embarcadero的delphi或c++ builder都不能開發。此外,又像iphone app一樣,metro app也是在編譯時需要加入簽證,以確保安全性與是否有使用非法的api。

WinRT framework的參考文件

http://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspx

借一張網友的圖 (http://blog.csharplearners.com/wp-content/uploads/MicrosoftBoxologyDiagram.png)

 

 

 

 

 

 

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 aftcast 的頭像
    aftcast

    蕭沖的書房

    aftcast 發表在 痞客邦 留言(0) 人氣()