开门见山,先把windows8 开发平台和开发框架分享给大家。

      win8 App开发主要分成两部分,desktop app和metro app。右边蓝色的部分就是desktop app的部分,也是从win7延续过来没有发生变动的部分,前段在论坛上经常看到有人说在win8中不再支持MFC,ATL等,这些绝对是谣言,以前桌面开发支持的,win8桌面程序也都支持,所以搞MFC,Com,ATL等开发的不用觉得是世界末日,地球还是绕着太阳转着呢。

     重点是绿色的部分,Metro风格App的开发平台,这是win8中全新的架构,让我们一层层来看吧。      底层是windows内核,往上是windows Runtime层,你可以把WinRT理解为升级版的Windows API,比如它提供了更易使用的Metro UI的API,比如异步编程的全面支持,比如对多种开发语言交互的支持等等,可以说是微软继.Net之后的又一重要框架。它是由C++实现的,所以性能应该会有优势。

     从WinRT上方的几部分可以看出,win8支持3种方式开发Metro App,第一种是Html+CSS+JS,第二种是XAML+C++,第三种是XAML+C#.Net或VB.Net。对Javascript的支持,绝对是Web前端开发者的福音,至少UI这部分的开发几乎是无缝就能上手的,JS也终于走出浏览器这个沙盒,开始支持开发native app了,从Win8也对JS提供支持可以看出目前JS有多火,曾经小看或轻视这门语言的人该醒醒了。而C++开发者也可以走第二条路,而且从XAML设计UI和WinRT提供的UI接口来看,易用性和扩展性绝对要比桌面时代C/C++开发UI要强很多。第三种.Net的开发方式,让原来.Net的开发者也可以无缝过渡到Win8的Metro App开发上。所以,不管是Web开发者,C++开发者,还是.Net开发者进军Win8 Metro App开发的路都是走的通的。从技术上来看,虽然支持三种开发形式,但最后其实还是映射到WinRT这个沙盒中,所以性能都不会差。

     也许还有人会问,那原来的Win32 API和Com API跟Metro App开发中就完全无关了吗?其实不然。因为有了WinRT API了,可以说大部分Win32和Com的API确实对Metro App开发不再有用,但是仍旧有一小部分API在WinRT中是没有被Cover到的,而这些应用仍旧是可以被使用的。据说在SDK代码头文件或者MSDN新的说明文档中都会指明各个API可以应用的范围(桌面或Metro或两者都支持)。其实.Net也是类似的,原来.Net Framework中的也是只有一部分API仍旧保留作为Metro App开发的API,只是.Net的这部分应该比Win32和Com中保留在Metro开发中能使用的要多的多了。

     如果让我来进行开发技术选型的话,我还是倾向逻辑层用C++实现封装成WinRT组件,Metro UI层用JS来做,基于WinRT的特性,JS调用WinRT组件的话几乎是无缝的,只是对Win8(IE10)中JS引擎的性能略有点担心。(呵呵,因为本人对.Net了解不多,所以暂不会考虑上面第三种开发方式)

     当然上面这些都只是初探Win8后自己的理解,可能多少有些偏颇,看到这里,大家对Win8这个开发框架有什么想法吗,疑问或指正也行,有的话别忘了留言分享下!