Windwos 8上的 WinRT (windows runtime) 簡介 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
大家好,剛自己在部落格裡貼文,也貼一份分享給大家,還請不吝指正!
(http://aftcast.pixnet.net/blog/post/30402607) 部落格裡有圖 ⓪蕭沖 編著 話說自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
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
leveon
資深會員 發表:30 回覆:389 積分:303 註冊:2012-02-12 發送簡訊給我 |
謝謝分享
還沒機會寫winRT @@ 整理一下沖哥所說的 1.WinRT是一總COM 專為觸控設計的API 2.非.Net的一支 3.安全等級較高 不能存取 registry 和檔案 4.語言中立 C C# VB JavaScript 都可支援 5.和桌面程式溝通要透過某總通訊協定 有沒有一總工具能通吃 apple android winRT? C/C 仍是目前最好的跨平台工具 不過我相信Delphi總有一天能編出 Arm 和Java 的碼 因為free pascal和RO都已經做到了 GUI部分的話 還是要依平台特性各自重新寫過 軟體才會好用 通用性的框架實在很難做得好 其實我也認為沒有所謂死不死 Windows 就像一條船 win32 .Net WPF Silverlight WinRT ....就好像一格一格的船艙 大家就各自待在船艙無法下船 直到船沉為止......... 當然也包括 Dxlphi 他可是在第一格船艙裡 他能不能"再度"走出船艙 並跳船成功就讓我們繼續看下去 顆顆~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |