線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1384
推到 Plurk!
推到 Facebook!

Windwos 8上的 WinRT (windows runtime) 簡介

 
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-01-17 14:56:16 IP:114.32.xxx.xxx 訂閱
 大家好,剛自己在部落格裡貼文,也貼一份分享給大家,還請不吝指正! 
(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
編輯記錄
aftcast 重新編輯於 2013-01-17 01:19:26, 註解 無‧
aftcast 重新編輯於 2013-01-17 01:28:27, 註解 無‧
aftcast 重新編輯於 2013-01-17 23:00:05, 註解 無‧
leveon
資深會員


發表:30
回覆:389
積分:303
註冊:2012-02-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-01-24 08:30:19 IP:111.240.xxx.xxx 訂閱
謝謝分享
還沒機會寫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 他可是在第一格船艙裡 他能不能"再度"走出船艙
並跳船成功就讓我們繼續看下去 顆顆~~



編輯記錄
leveon 重新編輯於 2013-01-23 17:32:40, 註解 無‧
leveon 重新編輯於 2013-01-23 17:33:30, 註解 無‧
系統時間:2024-04-20 8:41:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!