色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

Windows Runtime - 面向?qū)ο蠡腃++(并非意味著托管)

  Windows 8的開發(fā)平臺(tái)總體上分為兩部分:一是全新的WinRT,界面搭配Metro style,二是傳統(tǒng)的Win32、.NET(SL)、IE三大平臺(tái),界面為傳統(tǒng)窗體風(fēng)格。其中全新的WinRT被微軟視為開發(fā)者的未來。

  WinRT平臺(tái)開發(fā)又細(xì)分為兩大方式:一是C/C++搭配XAML,或C#/VB搭配XAML,二是JavaScript搭配HTML/CSS。C、C++、C#、VB、Javascript全部可以直接調(diào)用WinRT APIs,這樣微軟將Native(本地)、Managed(托管)、Dynamic(動(dòng)態(tài))三大語言運(yùn)行機(jī)制統(tǒng)一了起來。可見,WinRT是微軟將Win32、.NET(SL)、IE三大平臺(tái)進(jìn)行整合的產(chǎn)物。

  回顧歷史,Win32是微軟最早推出、發(fā)展時(shí)間最久的一個(gè)開發(fā)平臺(tái)。C++搭配Windows SDK或C++搭配MFC等類庫或VB均是Win32平臺(tái)的開發(fā)方式。而COM技術(shù),也作為那個(gè)時(shí)代的組件模型,為微軟的發(fā)展建立了不可磨滅的功勛。2000年,微軟推出.NET戰(zhàn)略,.NET平臺(tái)開始走入主流。WinForm、WPF以及之后的Silverlight均是.NET時(shí)代的產(chǎn)物。而Assembly組件模型,也逐步地在很多領(lǐng)域替代COM技術(shù)。

  Win32時(shí)代,我稱之為“PC時(shí)代”。那時(shí)的硬件性能普遍較低,所以Win32平臺(tái)具有非常高效的性能。但是開發(fā)效率低下,內(nèi)存管理復(fù)雜,COM技術(shù)晦澀難懂、沒有統(tǒng)一的數(shù)據(jù)傳遞模型等這些問題,使Win32難以適應(yīng)網(wǎng)絡(luò)發(fā)展的需要。于是微軟推出.NET戰(zhàn)略,“網(wǎng)絡(luò)時(shí)代”來臨。.NET平臺(tái)從2000年開始,到現(xiàn)在,已經(jīng)發(fā)展了10年左右,微軟依次給我們帶來了.NET1.1、.NET2.0、.NET3.0、.NET3.5。

  .NET4.0。.NET平臺(tái)解決了Win32平臺(tái)的問題,設(shè)計(jì)了非常優(yōu)雅的開發(fā)接口和龐大類庫,開發(fā)效率提升了,內(nèi)存管理引入了GC,Assembly組件模型非常簡單,而且還解決了COM技術(shù)造成的DLL Hell問題,也帶來了統(tǒng)一的數(shù)據(jù)傳遞模型XML。但是.NET平臺(tái)從一開始,就暴露了缺點(diǎn),由于.NET是建立在Win32基礎(chǔ)上的托管API接口,性能下降,系統(tǒng)資源消耗嚴(yán)重,而且和Win32平臺(tái)交互困難。隨著硬件的提升、.NET平臺(tái)的不斷發(fā)展優(yōu)化,性能得到部分提升,跨平臺(tái)調(diào)用方案也一定程度解決了Win32平臺(tái)的交互問題。但是這些改變,沒有根本解決問題,即便微軟后來又推出了“改良的.NET平臺(tái)”——Silverlight,但.NET平臺(tái)的缺點(diǎn)還是隨著“移動(dòng)時(shí)代”的來臨,再次暴露無疑。此時(shí)WinRT上場了!

  那么,WinRT給我們帶來了什么呢?WinRT是“移動(dòng)時(shí)代”需求的產(chǎn)物,那肯定會(huì)充滿“移動(dòng)時(shí)代”的色彩。第一,WinRT給我們帶來了界面上的革命:Metro。新的Metro風(fēng)格界面更加適合觸摸屏操作,更加適合多尺寸的顯示屏,全屏的顯示方式突出了以內(nèi)容為中心的理念。第二,WinRT給我們帶來了全新的系統(tǒng)級Native API,WinRT APIs是Native的,而且直接建立在系統(tǒng)內(nèi)核之上,并且還自動(dòng)獲得硬件加速,包裝非常類似.NET,既高效又易用。第三,WinRT采用了MVC模式,做到了界面和邏輯的很好分離。XAML和HTML5作為兩大界面標(biāo)記語言同時(shí)被采用。第三,WinRT給我們帶來了新的組件模型:C++組件擴(kuò)展。該組件模型是COM和Assembly技術(shù)的結(jié)合體,可同時(shí)被Native、Managed和Dynamic三種類型的語言直接調(diào)用。WinRT APIs本身就是使用的C++組件擴(kuò)展技術(shù)實(shí)現(xiàn)的,所以做到了C、C++、C#、VB、Javascript的直接調(diào)用。WPF、SL、網(wǎng)頁應(yīng)用均可以較小代碼調(diào)整,即可在WinRT平臺(tái)運(yùn)行。第四,WinRT同時(shí)支持X86/64、ARM架構(gòu),即可在PC上運(yùn)行,又可在Pad上運(yùn)行。第五,WinRT全面采用了異步技術(shù)。在WinRT中,微軟一直遵循一個(gè)簡單的規(guī)則:如果一個(gè)API預(yù)計(jì)耗時(shí)超過50毫秒,那么API就是異步的,這樣就能確保Metro UI上的操作體驗(yàn)是最好的。第六,WinRT程序在不顯示的時(shí)候,自動(dòng)轉(zhuǎn)換為掛起狀態(tài),不占用CPU,節(jié)省了電能消耗。

  對于傳統(tǒng)平臺(tái)開發(fā),也稍微做下介紹。IE平臺(tái)更新到了IE10版本,.NET平臺(tái)更新到了.NET4.5版本。另外,專門提下,傳統(tǒng)的網(wǎng)頁插件技術(shù)已經(jīng)不能在Metro風(fēng)格的IE中獲得支持。而新的插件技術(shù)或者是否還提供插件技術(shù)尚不得而知。

  開發(fā)工具對應(yīng)的是Visual Studio 11 和 Expression Blend 5。

  WinRT是一個(gè)新的API 集合,具有以下特性:

  • 它實(shí)現(xiàn)了Metro UI規(guī)范的UI庫
  • 為Windows開發(fā)人員提供一個(gè)簡單的UI編程模型,你不需要學(xué)習(xí)Win32API的那些復(fù)雜的API了
  • 它使用XAML-base的UI系統(tǒng)
  • API都設(shè)計(jì)成了異步的
  • 它和.NET一樣是個(gè)沙箱的API,自成體系,用于創(chuàng)建AppStore上的應(yīng)用程序。
  • API的元數(shù)據(jù)格式是ECMA335,和.NET一樣的標(biāo)準(zhǔn)。這是不是意味著以后Mono也可以在xUnit上去實(shí)現(xiàn)這樣的API呢?

  WinRT包裝的新的用戶界面系統(tǒng),和Win32API一樣是Com的上層。

  Windows運(yùn)行時(shí)(WinRT)是為了在Windows上給用戶提供一種流暢且安全的應(yīng)用體驗(yàn)。WinRT會(huì)受到.NET、C++、以及JavaScript三者的影響。WinRT不會(huì)取代CLR或Win32,而是為那些使用不同語言編寫的應(yīng)用程序提供統(tǒng)一支持,以便它們可使用新的Metro風(fēng)格用戶界面運(yùn)行于Windows之上。 

  WinRT不是為了取代.NET或Win32提供的所有功能,但是它是一個(gè)公共平臺(tái),以便那些使用不同語言編寫的應(yīng)用程序可使用新的Metro風(fēng)格界面來運(yùn)行。當(dāng)混合C#應(yīng)用程序基于WinRT創(chuàng)建Metro風(fēng)格用戶界面時(shí),程序中將仍能執(zhí)行LINQ查詢,對于存儲(chǔ)網(wǎng)絡(luò)、新式應(yīng)用程序的安全性等方面同樣能執(zhí)行LINQ查詢。完整的運(yùn)行時(shí)架構(gòu)如下圖所示:

  在類型上,WinRT必須提供語言無關(guān)的類型——integer(整數(shù))、enumerations(枚舉)、structures(結(jié)構(gòu))、arrays(數(shù)組)、interfaces(接口)、generic interfaces(泛型接口)、以及runtime classes(運(yùn)行時(shí)類)。引入了被稱之為HSTRING的新字符串類型,該類型允許在不進(jìn)行任何數(shù)據(jù)復(fù)制的情況下,在應(yīng)用程序與運(yùn)行時(shí)環(huán)境之間傳輸字符串。

  每個(gè)WinRT對象都會(huì)對應(yīng)一些接口,其中有兩個(gè)接口屬于每個(gè)對象:IUnknown接口,熟悉的COM接口;以及IInspectable接口,用于根據(jù)對象所包含的元數(shù)據(jù)來發(fā)現(xiàn)有關(guān)該對象的信息。一個(gè)對象可能通過接口提供其他功能,然而運(yùn)行時(shí)類會(huì)把這些接口集中公開出來。例如,一個(gè)FileInformation對象擁有由FileInformation類公開的IStorageItemInformation、IStorageItem、IStorageFile三個(gè)接口。

  WinRT對象在編譯時(shí)被公開給C++應(yīng)用程序,而對于C#或VB.NET應(yīng)用程序而言,對WinRT對象的綁定一部分是在編譯時(shí)完成的,另一部分則是在運(yùn)行時(shí)完成的。HTML或JavaScript應(yīng)用程序只有在運(yùn)行時(shí)可以看到WinRT對象,而且元數(shù)據(jù)是動(dòng)態(tài)生成的。

  Metro界面運(yùn)行在一個(gè)不可重入的單線程之上,然而應(yīng)用程序的其余部分可以從線程池中使用由運(yùn)行時(shí)環(huán)境所自動(dòng)提供的多線程。

  開發(fā)者可以用C#語言創(chuàng)建可供C++或JavaScript的WinRT應(yīng)用程序使用的Windows運(yùn)行時(shí)組件,然而須要遵守一系列規(guī)則:“結(jié)構(gòu)體只能擁有公共數(shù)據(jù)字段;只允許對XAML控件使用繼承,其它類型都必須使用sealed關(guān)鍵字;只支持系統(tǒng)提供的泛型。” 

NET技術(shù)Windows Runtime - 面向?qū)ο蠡腃++(并非意味著托管),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 惠安县| 仲巴县| 疏勒县| 大港区| 鸡东县| 错那县| 绥中县| 七台河市| 邳州市| 丰镇市| 牟定县| 乌兰县| 丰城市| 格尔木市| 布尔津县| 县级市| 青田县| 虞城县| 新兴县| 连山| 友谊县| 万盛区| 九龙坡区| 改则县| 宝清县| 泽普县| 从江县| 沙河市| 舟山市| 阿克陶县| 仪征市| 靖江市| 开江县| 锡林浩特市| 观塘区| 七台河市| 江门市| 丽江市| 鹤峰县| 陆良县| 天气|