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