WPF 全称 Windows Presentation Foundation ,微软从它的 .NET Frameworks 3.0 开始加入了对其的支持。作为微软力推的下一代用户界面技术,他的到来到底会给桌面应用的用户体验带来些什么呢?
在技术上,WPF 提供了一种类 XML 的的标记语言 XAML 来开发界面。在绘图方面加入的大量特性的确足以让开发者欢欣鼓舞,这些特性包括 Direct3D 图形加速、向量绘图等等。然而探讨这些方面对普通用户来说并没有意义。我们想要探讨的关键在于,WPF到底会带来什么样崭新的用户体验。
WPF并没有提供一套全新的外观设计,但是它却提供给开发者开发华丽的窗口外观的能力。当然,在原来 MFC的时代,这并非不可能做到,但是无疑是困难的。据我所知,一些开发人员时常抱怨 MFC 框架艰涩难懂或者不容易使用,这种情况到 WPF的时代也许会划上一个句号了。这意味着,开发这更容易使用这以框架开发出非传统外观的窗口,轻松的加入各种动画效果。
当然 WPF 还没有迎来他真正的春天,目前使用 WPF 的开发的应用仍然有限,但是仅从现有的一些应用中我们仍然可以觑得其强大威力。
国内用户比较了解的恐怕莫过与腾讯的概念版QQ了。这个版本的软件在测试初期就受到很多用户关注,以至于申请测试的网页在一段时间内完全访问困难。这个只能运行于 Windows 7 的QQ版本,虽然没有实现QQ的全部功能,但是却对 WPF 的特性进行了较好的探索和展示。

我们看到这个版本的QQ提供了主窗口3D翻转的效果、动态的背景、具有漂亮动画效果的按钮等,的确让人对WPF的强大实力和发展前景充满希望。
此外,国外也有一些针对 WPF 的良好尝试,笔者比较欣赏的是来自 thirteen23 的一些产品。他们设计出来的应用漂亮到让人惊讶。
目前,只有一个基于 WPF 的 Twitter 客户端 blu 可以从官方网站下载到。

同概念版 QQ 一样,blu 也加入了大量华丽的动画效果,其中包括一段漂亮流畅的开启动画。此外,发布微博消息、回复、设置等功能激发时都会出现有趣的效果。
thirteen23 另一个漂亮的作品 continuum,有兴趣的读者可以到其官方网站山浏览更多演示:

相信在在实现这类漂亮功能更加简单的情况下,将会有更多开发者乐于尝试 WPF ,从而有更多的类似应用涌现出来,在 Windows 下的用户体验也会更加有趣。
不同于 MFC 的 Windows 专享地位,WPF 提供了一个跨平台应用的解决方案 WPF/E (Windows Presentation Foundation Everywhere) 也就是现在的 Microsoft Silverlight。
在 RIA 领域,Sliverlight 正与 Adobe Flash 展开竞争,而正如 Adobe 在 Flash 的基础上提供了 AIR 一样,Silverlight 也具备脱离网络独立运行的能力。
这种独立运行是寄宿在浏览器中的,在安全沙箱中运行,虽然在功能上受到了限制,但仍然具有相当的竞争力。
比如 Silverlight Client for Facebook 就是一个独立运行程序的例子,他无需在浏览器内运行,直接以一个窗口的身份出现,可以同时在 Windows 和 Mac OS 下使用。

尽管在在网页内嵌的 RIA 应用中,Flash 占有难以动摇的地位,但是类似如此独立运行的应用,个人认为 Silverlight 却更有竞争力。除了适合桌面开发并被程序员广泛接受的的开发环境 Visual Studio,更重要的是 Silverlight支持一些诸如多线程等的特性,使得原来熟悉桌面开发的大量程序员可以轻松适应。
下图为 thirteen23 的基于 Silverlight 的应用 TED Talks Player 在 Mac OS 下的效果:


即将发布的 Windows Phone 7 就使用 WPF 作为用户界面框架,我们看到 Windows Phone 7的界面可以说比较别致(或者说另类),但的确引人好奇。Windows Phone 7 给 WPF一个很大的施展拳脚的空间,也为其发展提供了机遇。同时,WPF 又何尝不是Windows Phone 7 的一个重要卖点呢?
WPF 的强大能力将会使 Windows Phone 7 上的应用更具吸引力。
不得不承认,微软在外观设计上一直落后于其竞争对手苹果。
WPF的确很强大,但是微软并没有大幅度改变其所提供的各种显示元素的外观。实际上,如果只使用微软提供的控件库,那么设计出来的窗口应该与传统窗口在外观上没有多少差别。WPF 只是提供了一套强有力的工具,使得开发者设计自己漂亮的界面和动画效果变得可能和简单易行。
这与苹果的 Cocoa 框架不同。Cocoa 框架开发的应用程序默认继承了 Aqua 风格的外观,尽管 Cocoa 有能力实现各种风格的效果。但是,无论是苹果本身还是用户都倾向于鼓励开发者使用这种默认的外观。而开发者显然也乐意这样做。即便是微软的 office:mac 也是如此。
这使得 Mac OS 下的应用程序在风格存在高度的统一,从而存在一种协调感。
反观 Windows 下,无论从前还是现在,开发者都喜欢开发自己独有的界面风格,也许单独每个拿出来,都是相当漂亮的,但是所有的些窗口显示在桌面上,整体效果就会大打折扣了。
当然Mac OS的千篇一律与Windows的百花齐放相比孰优孰劣仍待讨论,但问题的关键在于,WPF 既然把选择权交给了开发者,那么开发者是否有能力利用好这一利器,从而使得自己的应用拥有一个有品位的外观呢?
这恐怕很难,尤其对于小规模的企业来说,想要在外观上保证一个高水准是有难度的。在这个时候 WPF 强大的功能就成了双刃剑,它的强大必然吸引小规模开发者使用那些高级的动画和效果,并把它当作卖点。这种趋势可能会流行起来,但又不是所有的开发者都有能力开发出高水准的外观。
如果大量庸俗的设计充斥了桌面,用户对 Windows 的整体印象就会下降。
我对blu和QQ概念版的使用感受其中之一就是不稳定。如果对于QQ概念版这一测试版来说,其不稳定的原因可以归结为开发不完善,那么blu就难以解释了。事实上,往往是在动画效果的时候出现程序崩溃的现象,这很可能与 WPF 现在本身的缺陷有关。
关于这点,我虽然没有确切的定论,但是可以肯定,WPF 作为一项年轻的技术,恐怕仍需完善。
作为 .NET Framework 的一部分,他将运行于 .NET 框架内,在 .NET 虚拟机内运行。
这不但限制了编制 WPF 应用的语言种类,也限制了其性能。
尽管虚拟机的效率已经大大提升,但是仍然有很大一部分应用对性能要求较高,性能问题将会限制 WPF 的应用范围,他很难完全代替原来的框架。
WPF 虽然能做出很漂亮的效果,但是我们日常使用的应用是否都需要这样呢?如果不是,那么一些第三方的框架是不是更有吸引力呢?
也就是说,如果不使用 WPF 的高级效果,和自己设计的漂亮外观,那么实际上由 WPF 开发出的应用,在外观上与原来并没有太大的差别。WPF 此时的优势就在于相比以前更先进的开发工具,比如使用 XAML 描述窗体等。
但这并不只是 WPF 特有的。
比如开源的 Qt 和 GTK 框架,都提供了很方便的开发方案。此二者皆为跨平台的框架,原生支持OpenGL。其中 Qt 更是提供了非常丰富完善和强大的库,甚至内嵌 Webkit 网页渲染引擎。商业版的 Qt 还支持 Direct 3D。
这些框架都经过了较长时间的发展,比较完善,是否相较 WPF 更有吸引力呢?
恐怕 WPF 将会遇到强大的竞争压力。
WPF 给人眼前一新的感觉,但要成为 Windows 下用户界面框架王者尚需时日。我期待这更多漂亮的 WPF 应用出现的同时,也在期望其他框架对 WPF 的存在做出强有力的回应。
原文链接:http://www.techxav.cn/2010/07/13/something-about-wpf/
本文作者:@akirasphere
讲师:don 浏览数:45