WPF会重写Windows GUI的历史吗?
原文地址:http://tech.it168.com/zx/2007-09-15/200709141320653.shtml
你可能对微软的.NET框架3.0版本的最近的一次更新感到有点奇怪。主版本指出了在平台、工具或技术的一
个主要改变。但是3.0版本纯粹只是2.0版本的一个补充,2.0版本工作的方式没有任何改变,微软只是简单的
增加了一些新的东西。
不要认为我是错误的,新的功能还很不错。Windows信息基金会为分布计算从C/S和SOA上带来了一致性。并且WWF在工作流方面比以前更加容易理解。从技术角度来说,.NET3.0也包括Windows的卡片服务,这种卡片服务看起来对鉴权和认证方面更加关心,但事实并不是这样,.NET增加的部分可能会引起巨大的版本变更。
一、WPF问世,将带来Windows GUI的全新革命
下面让我们来谈谈WPF(Windows Presentation Foundation),我对WPF有一些复杂的情感,但是有一点是确定的,这是近十年来Windows的图形子系统的一次重大改变,并且它还包括除了核心图形构造和程序API的一些主要的改变。以我的观点来看,WPF是.NET版本改变的一个主要的证据。
WPF的全称是Windows Presentation Foundation,是微软新发布的Vista操作系统的三大核心开发库之一,其主要负责的是图形显示,所以叫Presentation(呈现)。
WPF作为新的图形引擎,它是基于DirectX的,当然增加了很多新的功能。其2D和3D引擎的强大看看Vista的界面就明白了,再加上其对Aero图形引擎的支持,更加让你感到神奇。
WPF 其实不仅仅是图形引擎,它将给Windows应用程序的开发带来一次革命,因为新的架构提供了一种全新的开发模式。
当然对于普通用户而言,最直观的就是界面越来越漂亮,看起来越来越舒服了;但对于开发人员而言,界面显示和代码将更好的得到分离,这是比较具有革命性的改变之一。还有就是桌面应用程序和浏览器应用程序的融合,根据ms的承诺,正在开发中的WPF/E,即WPF Everywhere版本,将为基于WPF的应用程序提供全面的浏览器支持,这意味着未来开发出的应用程序将可以基于浏览器在不同的操作系统上运行,当然由于目前还在开发中,我们并不确定会不会有一定的限制,根据WPF/E开发组的定义,WPF/E仍然是WPF的子集,而不是后继版本。总体而言,WPF的前景应该是一片光明。
随着Vista RTM的发布,微软新一轮的技术推广已经开始。其实在此之前,WPF已经有很大的推广。当然很多开发人员主要以技术研究为主,也有少数公司已经开始从事基于WPF的产品研发工作。
微软已经在Windows和.NET平台上提供了实质投资的举动是很重大的。这意味着我们最后能够期望逃脱GDI和GID+的限制,并转移到以整个现代的、面向对象的、多线程的、三维的界面技术上面去。GDI是当今Window桌面应用程序的主流图形库,GDI图形系统已经形成了很多年。它提供了2D图形和文本功能,以及受限的图像处理功能。虽然在一些图形卡上支持部分GDI的加速,但是与当今主流的Direct3D加速相比还是很弱小。GDI+开始出现是在2001年,它引入了2D图形的反走样,浮点数坐标,渐变以及单个象素的Alpha支持,还支持多种图像格式。但是,GDI+没有任何的加速功能(全部是用软件实现)。
二、WPF新技术层出不穷
在WPF中,引入一种新的图形合成引擎。可以提供更高丰富的图形显式合成,而且不会有任何的窗口闪烁问题。这种新的显式提交引擎与传统的Win32、Windows Forms相比主要有两个优点:
1)所有的每个窗口元素都可以任意的交替重叠。
2)所有的合成操作都是Direct3D中的离屏表面(Off-screen Surface)中实现的。
WPF将最好的Windows的GUI技术整合在一起,以及用来描述UI布局的Web的使用拼接在一起。
但是,在我们为之兴奋之前,请记住WPF本身还只是在1.0版本的技术。在成熟度和技术方面,你可以想象一下VB1.0版本。它是一种非常有意思的技术,在未来有很好的发展潜力,但是如果你现在就想用的话很可能会面对很多严重的问题。
WPF使用一种基于XML的语言来定义用户界面从而完成上述的工作。这种语言被称为XAML,XML应用程序标记语言。XAML是WPF的声明性语言,提供对界面、文档以及多媒体等界面层逻辑的渲染。而且XAML可以直接在IE中打开。我认为,如果一定需要通过学习XAML来使用WPF的话那么这种技术就是失败的。通过这种测量我们知道,当前发布的WPF做的并不是很好。在Visual Studio的下一个版本将会内置XAML的支持,并且它们是以一种Blend表达式的方式支持的,一个为了创建更漂亮的界面的工具是一个能吸引住设计师的工具,但是任何工具在它们的1.0版本的时候都不够好,WPF1.0不够好的原因是因为它使得开发人员必须去学习XAML。
Visual Studio“Orcas”为开发者对XAML的操作提供了一个环境,但是很多常用的操作必须通过手动操作XAML。Blend表达式使得界面布局和设计在没有手动输入XAML的情况下变得可能,但是应用概念例如数据绑定还是很可怕的。
这并不令人觉得惊讶,XAML对Postscript和HTML都是相似的:它是工具使用的一种语言,而不是人类使用的语言。在Postscript的早期,很多用户必须学习这门语言并且手写Postscript程序来控制打印机。相似地,在书写基于Web的应用程序时,我们在编程的前几年需要学习HTML。需要开发人员来学习一些旁枝末节的东西来学习一种技术的,这是一种不成熟技术的体现,这是我们成为比较早的学习者必须付出的代价。
我很期待我们将会看到WPF和它的工具在以后的几年能很快地成熟起来。从历史观点来说,3.0版本的任何技术,在主流采用变得很值得的情况下,成熟度达到了集成和非常值得关注的程度。从个人观点来说,我希望WPF跟上这个趋势,达到这个点,因为它是一种很酷的技术。
如果你想是个追逐新技术的人,并且你想要花费时间和金钱在你可能要面临的问题上,WPF现在很值得你去探索。即使你对追逐新技术持保守态度,WPF也是一项你需要紧密关注的技术。它表示了Windows的界面编程的未来,并且还可能成为Web界面编程的未来。经过几年后,我们将会对没有WPF的日子觉得奇怪。