天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Windows Runtime (WinRT) 揭秘

  看了個BUILD的PPT,Windows Runtime (RT)并不是一些新聞網(wǎng)站說的那樣微軟自廢.NET武功,而是恰恰相反,WinRT是Win32 API的現(xiàn)代版,其中有很深的.NET的基因,是Metro UI的.NET基礎(chǔ),如果考察Metadata的變化,WinRT的API定義的元數(shù)據(jù)是基于標(biāo)準(zhǔn)ECMA 335,也就是.NET的標(biāo)準(zhǔn) ,WinRT也是一個沙箱的環(huán)境,針對AppStore環(huán)境設(shè)計的。

  基礎(chǔ)知識

  微軟以推出Windows 8為契機(jī),以解決Windows長期存在的問題,并帶來了新的用戶界面,使得Windows更加安全和AppStore的商業(yè)模式。微軟在Windows 8 里打造了第三個 XAML-based UI 系統(tǒng), WPF只是一個供 .NET 這個圈子使用的XAML UI系統(tǒng),Silverlight只是給瀏覽器使用的XAML UI系統(tǒng),Windows Phone7將Silverlight到了手機(jī),現(xiàn)在將XAML帶到了涵蓋PC、Pad、Phone的所有系統(tǒng)(雖然微軟認(rèn)為平板也是PC,我還是想叫他Pad,用過iPad的都知道蘋果所定義的Pad和PC有很大區(qū)別)。

  .NET開發(fā)人員都對.NET 的P/Invoke和COM Interop很熟悉了,這兩種技術(shù)使得.NET人員可以使用Win32 API和COM組件,Mono也是使用P/Invoke技術(shù)創(chuàng)建原生的庫,例如Gtk#綁定到 Gtk+ API, MonoMac綁定到Cocoa API, Qyoto綁定到Qt API,Mono出現(xiàn)了MonoTouch,MonoDroid和MonoMac等等很有創(chuàng)新性的產(chǎn)品。 COM Interop 還可以使得C/C++從C#導(dǎo)入Com類型庫。

  創(chuàng)建原生庫的方法很多,但是這些工作都得是手工去做,很乏味而且容易出錯,從這點(diǎn)來說WinRT也是一個很有創(chuàng)新的,可以讓所有的開發(fā)者用同一個模型創(chuàng)建Metro UI的應(yīng)用

  WinRT

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

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

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

  WinRT Projections

  我們所說的“Binding”,微軟現(xiàn)在叫做“Projections”,又是一個新名詞。Projections就是向三個環(huán)境 Native (C and C++), HTML/Javascript 和.NET暴露接口的過程。所以在Win8上各類開發(fā)者依然可以用著不同的工具,但是卻是使用著統(tǒng)一的模型。

  如果開發(fā)者使用.NET或者C++寫的組件,它的API被存儲在一個WinMD文件里,你可以在三種環(huán)境(原生、JavaScript和.NET)。即使你的組件是用C++寫的,也不需要通過COM向外暴露,使用起來更像是一個面向?qū)ο蟮腃++ API。

  WinRT的底層定義了一套基本的類型和各種環(huán)境的映射,這是不是很像.NET環(huán)境里面對不同語言的支持哈。

  異步API

  微軟認(rèn)為,當(dāng)給開發(fā)者一個使用同步和異步的API的選擇的時候,開發(fā)者會選擇簡單的同步API,這在我們的.NET編程實(shí)踐中得到證明,.NET有很成熟的異步編程模型,還有特意為并行和異步處理而設(shè)計的F#,結(jié)果是什么呢,各位同學(xué)心里有數(shù)。

  在WinRT中,微軟一直遵循一個簡單的規(guī)則:如果一個API預(yù)計耗時超過50毫秒,那么API就是異步的,也就是說API是異步的哦,這樣就能確保Metro UI上的操作體驗(yàn)是最好的。

  異步編程歷來是一個繁瑣的過程,回調(diào)和狀態(tài),還有異常處理等。為了簡化這個過程,C#和VB也擴(kuò)展了支持 F#-inspired await/async 模型,異步編程變成了歡樂之旅。

  .NET的首要地位不見了嗎?

  之前的新聞中一直在質(zhì)疑.NET被微軟拋棄了,當(dāng)然不是了。也不是所有的.NET API都集成到了WinRT中,只是一個子集。

  當(dāng)你使用C#和VB,你使用的是完整的.NET框架。但是他們只暴露了一個較小的子集API給Windows 8的開發(fā)者。你可能會想,我可以通過一些技巧使用到整個.NET,如果你的程序不需要提交AppStore上接受微軟的審核,這是可以的。這種策略明顯是跟蘋果學(xué)的。

  借此機(jī)會.NET團(tuán)隊(duì)也對.NET做了一次清理,mscorlib.dll和System.dll中已被分割在不同的庫里頭了,隨著Win8發(fā)布的.NET版本是4.5了,也就是說.NET 4.5不是.NET 4的簡單補(bǔ)丁包,里頭加了不少東西,ASP.NET的版本號也是4.5,不像.NET 2.0 ~3.5 SP1,ASP.NET的版本還是2.0。為了在Win8里開發(fā),開始學(xué)習(xí).NET 4.5又是必須的了,這里關(guān)注的集中在客戶端開發(fā),同樣的在服務(wù)器端開發(fā)方面.NET 4.5也加入大量的干貨。

  創(chuàng)建WinRT 組件

  雖然WinRT支持很多的語言,但是微軟只是用C++和.NET演示了如何開發(fā)一個WinRT組件,使用.NET來開發(fā)WinRT組件會比C++簡單得多。也不是所有的.NET特性都能用上哦,比如組件類就不能使用private字段,在異步的API里不能使用Task<T> ,要用IAsyncOperation 代替。

public sealed class AddTwo
{
public int Add (int a, int b)
{
return a + b;
}
public async IAsyncOperation SubAsync (int a, int b)
{
return a - await (CountEveryBitByHand (b));
}
}

NET技術(shù)Windows Runtime (WinRT) 揭秘,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 欧美丰满熟妇无码XOXOXO | 99热久久这里只有精品 | 国产精品免费一区二区三区视频 | 色AV色婷婷97人妻久久久 | 91久久偷偷看嫩草影院无费 | 国产成人自产拍免费视频 | 97在线精品视频 | 久久精品中文字幕有码日本 | 校园全肉高h湿一女多男 | 午夜AV亚洲一码二中文字幕青青 | 幸福草电视剧演员表介绍 | 六月婷婷国产精品综合 | 亚洲高清国产品国语在线观看 | 青青草国产偷拍在线av | 爆操大胸美女 | 粗好大用力好深快点漫画 | 国产亚洲精品 在线视频 香蕉 | 久久精品一区二区影院 | 成人中文字幕在线观看 | 美女打开双腿扒开屁股男生 | 中文免费视频 | 久久视频在线视频观看精品15 | 中国国产不卡视频在线观看 | 国产互换后人妻的疯狂VIDEO | 免费观看美女的网站 | 理论937 | 久久亚洲这里只有精品18 | 美女张开腿让男人桶爽无弹窗 | 男同志china免费视频 | 国产69精品9999XXXX | 菲律宾毛片 | 扒开校花粉嫩小泬喷潮漫画 | 祺鑫WRITEAS流出来了 | 男生J桶进女人P又色又爽又黄 | xx69欧美| 九九这里有精品 | 2021国产在线视频 | 人人插人人射 | 国产AV精品国语对白国产 | 丰满的女友1在线观看 | 亚洲视频精品 |