|
關(guān)于windows8的架構(gòu),這張圖流傳的相當(dāng)廣泛
但是有多少人明白這其中的奧秘,我特意做了一些實(shí)驗(yàn),來發(fā)現(xiàn)這到底是怎么一會兒事兒。
首先來看看win32 時(shí)代我們開發(fā)一個(gè)應(yīng)用的過程:
一直都是折騰類庫來開發(fā)的,dotNET類庫比win32類庫進(jìn)了一步,做了一些更深的封裝。雖然dotNET更先進(jìn),但c++的既存代碼非常豐富,而且其內(nèi)存密集操作巨大的性能優(yōu)勢,讓人難以割舍。但建立一個(gè)混合c++類庫和dotNET類庫的項(xiàng)目時(shí),結(jié)合起來并不那么令人愉快,P/invoke,c++/cli 比較麻煩。
再來看看WinRT:
Oh yeah,只有一種庫,winmd lib。隨便混合,你不需要關(guān)心一個(gè)winmd類庫是用什么語言編寫的,而且這個(gè)winmd類庫只有一個(gè)版本,而且他可以在 x86 x64 arm 的win8上執(zhí)行.以前混入c++類庫后面對多平臺的部署可是很頭疼的,現(xiàn)在,這事兒不存在了。
當(dāng)然傳統(tǒng)的c++ lib 肯定可以用,一旦使用,就要自己考慮一攬子平臺問題,既然win8是個(gè)多平臺的系統(tǒng),您自己掂量著辦吧。
再來說說directX,做游戲的,第一關(guān)心的就是圖形圖像api,很遺憾,dx目前沒有winmd的版本。
微軟提供了三個(gè)平臺的傳統(tǒng)c++ lib,這里面包括 dx11,也就是說做游戲必須要用c++,當(dāng)然一定會出現(xiàn)各種開源引擎,可以用任意語言調(diào)用來寫游戲,包括js。
只是這次微軟一次放出了太多的變化,讓我們的抉擇一下變得太多。有點(diǎn)不知所措了。
wp7才締造了一個(gè)完全dotNET framework的環(huán)境,并且反響還不錯(cuò),win8馬上祭出了winrt。
從dotNET framework遷移到winrt并不算跨度大,最大的變化是c++的加入,dx的加入。
壞消息是本來一個(gè)很清楚的xna一統(tǒng)桌面、手機(jī)、家用機(jī)的局勢,變得很撲朔迷離了,終究微軟一定會有一個(gè)XNA winmd,也許換個(gè)名字,也許干脆叫DX,最終實(shí)現(xiàn)pc三平臺、家用機(jī)、手機(jī)公用一套圖形接口。
但這個(gè)過渡期會多久,這期間多種技術(shù)、多種版本并舉,煩惱的開發(fā)者會變得很憤怒,微軟究竟能不能給出比較好的方法來平穩(wěn)過渡,我們拭目以待。
好消息是龐大的c++ dx游戲群可以很快的轉(zhuǎn)變成win8的 metro 版本,主流游戲引擎只需一個(gè)小小的轉(zhuǎn)身就可以for metro了。
不要用愚蠢的決策來傷開發(fā)者的心,win8一定會成功。
NET技術(shù):談一談 Windows 8 的軟件開發(fā)架構(gòu),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。