浅谈Windows 8, WinRT, XAML 和Silverlight

相信大家都很关注即将出世的Windows 8, 2 月 29 日(也就是明天)的全球移动通信大会(MWC)上,微软将带来 Windows 8 消费者预览版(Consumer Preview),让我们来先睹为快,了解下windows 8 给我们带来了哪些新特性。

桌面与Metro

  • Windows 8有两种模式,分别是“桌面”和 “Metro”。这些名字都是暂时的,很可能在系统发布前改变。
  • Silverlight和WPF将继续运行在Windows8的桌面模式下。你可以认为桌面模式为Windows7++的一个改进版本,特别是对触摸操作进行了优化。老实说用手指在桌面模式下操作非常流畅,而这在Windows 7中是痛苦的。
  • 所有应用程序,在Windows 7中运行的Windows8桌面模式运行。我电脑上已经安装了Silverlight和Flash,OneNote中,Live Writer的,即时信使,Skype和更多。到目前为止没有问题(除了偶尔的不稳定,因为“这是一个早期预览版本”(TM))。
  • Metro风格的应用程序是一类完全新的应用程序。他们其实更类似于一个Windows Phone7应用程序,而不是一个典型的Windows应用程序。它们用触摸最佳,也可以用键盘和鼠标驱动。
  • Metro 风格的应用程序合理的3种开发方式:XAML/C++,XAML/C# 或者HTML/CSS/Javascript。他们依靠一套名为“WinRT” 的API。

最后一点最为重要,它意味着你可以根据需要选择哪一类开发方式来创建你的Metro风格的应用程序。


WinRT程序设计编写体式

  • 三种编写体式之间,由于语言的关系会有一些不同。例如:Javascript 和C#以不类似的方式解决异步编程(顺便说一下,.Net Framework 4.5中C#有很多await,async 等关键字,使异步编程更类似于同步编码)。同样Javascript比C#更加灵活,但C#代码调试更加容易等等。
  • 三种编写体式中谈非托管代码“(WinRT库),当然是C ++,这是直接调用非托管。对于C#和JavaScript,有一层托管层去深入调用WinRT。然而,托管层比以前更瘦。原因很简单,大部分之前的.NET库是现在的WinRT库,而且这些都是非托管。
  • 然而对于C#开发人员,你不会注意到非托管的WInRT(在一些罕见的场合除外),因为API是托管的。

    Windows8的编程模型:蓝方是大致维持不变(NET4.5,Silverlight5中,WIN32),一切都将照常运行。绿色的一面是新的


可移植性的Metro风格的应用程序

  • WinRT编码的HTML/ CSS/ JavaScript的应用程序是不跨平台的。它们是新的东西,所以无论是HTML/CSS(例如新的Grid布局,这是现在的其他浏览器不支持的),他们使用的都是特定的WinRT API。这不是网页编程,这是一个独立的Windows8应用程序是在一种编程语言,也可以在网络上使用的编码。可以充分利用两个非常不同的野兽,虽然课程的知识和技能。
  • XAML/ C#的应用程序不是Silverlight或WPF。他们是新的东西。他们使用特定的WinRT API 。大多数情况下,这些API全部从已有的Silverlight中获得,但是有一个相当大的“大扫除”工作,以及大量的API不同的命名空间中移动,有时改名。一个很好的例子是System.Threading.Dispatcher类,这是现在Windows.UI.Core.CoreDispatcher。CheckAccess()方法现在是属性是现在名字命名为ThreadAccess的属性。

综上两点,注意到类似的开发经验是:大部分是熟悉的,有些东西是新的(最显着的新的/改名的API),这是一个学习的小技巧。

如何选择

用Jason Zander's和一些技术专家的自己的话来说,选择开发一个新的Metro风格的应用程序的编写体式,你应该考虑你所拥有的技能。如果你是一个web程序猿,在javascript中有丰富的经验,很显然,你可以运用你熟悉的语言来进行开发。你将有一个学习路线来学习新的专有的APIs。如果你是一个silverlight/WPF开发人员,或者没有XAML语言基础的.NET开发人员,你将会更加容易上手C# / XAML这种编写体式。最后,如果你是一个C++爱好者, C++/XAML的编写体式就是你的首选了。


原文地址:https://www.cnblogs.com/lmyhao/p/2366725.html