WPF, WPF/E释疑

什么是WPF,经常看博客堂以及博客园的朋友,我相信眼睛都快磨出茧子来了。WPF嘛,就是现在称之为Windows Presentation Foundation,小名叫Avalon的那个东东,为了更好的实现Windows Vista体验的基础层架构,是.NET 3.0的一部分。如果一句话以蔽之,就是_一个更有生产力的、更统一的用来管理用户界面、文档及多媒体等的模型。_再仔细说说,更有生产力就是指开发丰富实用外观不费劲,易于快速开发,而更统一则是指开发B/S以及C/S可XAML方式以统一知识域,不需要分而化之。

讲到WPF,就要提到XAML,XAML是WPF的声明性语言,提供对界面、文档以及多媒体等界面层逻辑的渲染。而且XAML可以直接在IE中打开(如右图)。同时,还有一种XBAP方式(如左图),也可以在IE中打开。两者会有一些异同,这在下面会做表述。

那么WPF/E呢,可能知道者就比较少了。这里面的E是指的Everywhere,也就是可以让WPF到处可以运行。我们知道,WPF本身是WinFX也就是现在的.NET 3.0的一部分,所以想要运行WPF,客户端必须安装.NET 3.0,而.NET 3.0的安装条件是Windows XP、Windows Vista、Windows Server 2003、_Windows Longhorn Server_之四大金钢。那么你如果想让WPF到处可以运行,就必须首先做到.NET可以到处安装。虽然说有专家预计在Windows Vista推出24月之内,全球会有2亿用户会使用上已经内置.NET 3.0的OS。但还有很多兄弟们仍然战斗在其它操作系统、其它浏览器、其它设备上,如何让这些兄弟们可以共享WPF之乐呢?这就是WPF/E。

而WPF/E,小名Jolt,目前正在紧锣密鼓的开发当中,一些细节尚未披露,目前可以知道的是它是使用Javascript来实 现,用来使其可以跨平台、跨浏览器、跨设备来使用。它也同样采用有些异构化的XAML来编写(主要添加了一些特殊的Javascript标记)。

对于开发人员来说,喜欢究根问底。这些方式,.EXE, .XAML,.XBAP还有WPF/E到底有何异同?在各种场合下面应该如何使用呢?我相信很多人会非常好奇。虽然看了很多DEMO,相信也有一些朋友在一些细节上还是有很多模糊。在青岛的时候,我做了下面这个表(当时展波兄也通过越洋电话提供免费支持),希望对大家有帮助。

.EXE XAML XBAP WPF/E
IE宿主运行 No Yes Yes Yes
支持其它浏览器 No No No Yes
支持其它操作系统 No No No Yes
跨设备 No No No Yes
支持业务逻辑 Yes No Yes Yes
需要.NET 3.0 Yes Yes Yes No

 

希望对大家理解这些概念有所帮助。

补记:关于.NET 3.0的命名,我个人总觉得是一个败笔,因为.NET 3.0必须依赖于.NET 2.0的存在,没有.NET 2.0,则无法使用.NET 3.0,所以可以说.NET 3.0=.NET 2.0+WPF+WCF+WWF+WCS+…。同时原计划中的3.0有可能会被命名为3.5,而3.5倒不必依赖于3.0了,不然就没完没了了。据说当初之所以改名字是怕别人混淆,怎么刚推完.NET,又开始推WinFX了?归纳到同一品牌下我没有异议,但突然直接升级为3.0,倒使得此事有些让人混淆了,甚至有些同事至今都分不清WinFX与.NET 3.0的区别。