WPF——微软的UI革命
作者:Tony Qu
(本文未经许可不得转载)
上次我写了一篇《WPF简介》,当时我仅仅是对WPF有初步认识,但通过近期的学习之后,我开始逐步领会WPF的真正意义,它不仅仅是一项技术而已,它给我们带来的将是一场UI革命。
回顾过去
在过去几十年里,Windows的用户界面在不断的改进,特别是Windows XP的推出,给人眼前一亮的感觉。在过去的日子里,有许多程序员和公司为了实现类似于、甚至优于Windows XP的用户界面,大量制作了基于Windows Forms的自定义控件,通过重写OnPaint来对控件做彻头彻尾的美容。随着Web 2.0的不断流行,Web界面也逐步开始仿造Windows Forms的路线,开始制作类似于Windows Forms的界面,这些控件它们可以像Windows Forms一样拖动、有相当漂亮的外观,再加上AJAX,一切都似乎和Windows Forms没什么差别了。但这只是用户的看法,对于程序员来说,如今要完成一个类似于Windows Forms的Web界面谈何容易,你必须精通JavaScript, AJAX, XML, XSLT等,这些技术每一样都需要太多的磨练,特别是JavaScript,还要考虑浏览器兼容性,工作量会更加显著。
在以上的Windows Forms和Web Forms开发中有一个很明显的特点,程序员永远要承担一部分美工的工作,即使美工帮你把一些图片都设计好了,你还是不得不用GDI或者HTML Table来帮这些图片拼凑起来,这是很寻常的事,相信每一个有过UI开发经历的程序员都体会过。
在这里我不得不提一下Adobe Flash。在Adobe收购Macromedia之后,Flash开始走专业化开发路线,相继出现了可以用于开发商业级Flash应用程序的软件包,这个如今几乎可以运行在任何一台计算机上的矢量图形软件的确做的很不错,它很好地解决了速度和漂亮的关系,使得在Internet上运行及其漂亮的界面成为可能。但到目前为止,使用Flash的人大部分是美工,这就决定了即使开发应用程序,很多也是半路出家的美工们在做开发,我并不是看不起这些美工,但术业有专攻,美工能力强,不等于编程能力强。这就导致目前市面上大部分的Flash应用程序停留在一个初级阶段,无论是OO还是架构设计,都无法达到成熟商业应用的等级。
WPF带给我们什么
最让人熟悉的肯定是WPF的XAML语言,这一语言自从Avalon阶段就被炒得沸沸扬扬,很多人都说这是一种全新的语言,它可以如何如何如何。。。但有多少人知道它的真正意义。XAML在WPF中的真正用途是界面描述,当然它也可以用来写代码。XAML将有效地把界面从代码中分离出来,使得程序员和设计师可以更好地合作,创造出更加优秀、漂亮的应用程序,这是以前人们无法想象的。虽然使用xml作为界面载体并不是什么新技术,但微软把它作为一个战略来推广自然将大大增加它的使用范围,通过微软的一系列开发工具,可以让初级程序员也可以基于这一架构开发出优秀的软件产品来,这就是微软开发工具的魅力
正因为XAML可以做界面描述,而且微软正在打造一个全新的基于XAML的开发架构,在未来的某一天我们将看到大量的调用XAML的WPF程序,在1-2年内,我们的浏览器中将大量安装WPF浏览器插件,我们将看到许多不可思议的漂亮应用程序,这些都是WPF带给我们的。
XAML本身的灵活性是很好的,从理论上讲它可以描述任何想要描述的东西,这里面自然也包括矢量图形。
Expression Web
类似于原来的Microsoft FrontPage,增加了不少.net的元素在里面,但总体界面看起来还是像FrontPage的升级版
Expression Blend
专门用来设计界面级XAML的软件,这款软件是专门供界面设计人员使用的,而WPF编码可以在Visual Studio中完成。
Expression Design
专门用来设计矢量图形的软件,也是基于XAML的,因此设计出来的东西都是可以嵌入WPF界面中的
Expression Media
专门用于做媒体编辑、管理、播放的工具,估计会与Microsoft Media Foundation捆绑起来。
其中的Microsoft Expression Blend和Microsoft Expression Design就是专门为WPF和XAML设计的。从软件功能上看,Microsoft Expression Design是专门为了与Flash的矢量图形编辑软件竞争而开发的,至于Microsoft Expression Blend+Visual Studio Orcas则更像Flash的Apollo。从这些迹象来看,微软已整装待发,准备进入矢量图形领域,如果不出意外地话,在未来2-4年里,WPF将占据至少30%的市场份额,成为矢量图形领域可以与Adobo相抗衡少数几家公司之一。
WPF产业链将在2-3年内形成
随着WPF的大面积推广,基于XAML的矢量图形设计产业将很快形成,当然在最初的1-2年里可能无法吸引高端的专业设计人才加入,因此设计出来的界面也会稍显生硬,就像当初Flash刚开始流行的那几年,但在之后,将会逐渐走入正轨,大量的专业设计人才将开始学习XAML,并将原来的Flash作品逐步移植到XAML中。
这其中将重要包括两个产业:
矢量图形/动画设计产业
这是一个围绕Expression Design展开的产业,该产业将十分类似于目前的Flash产业链,会有大量的矢量图形设计公司涌现出来。还有一些公司则会做一些动画品牌,就像当年showgood这样的品牌。另外大家要注意一点,WPF不单单支持2D矢量图形设计,也支持3D矢量图形,因此这一产业要比Flash目前的产业发展的更加壮大,虽然一些第三方公司提供了一些支持3D的Flash设计软件,如Swift,但这始终无法弥补Flash的“先天不足”。
界面设计产业
这是一个围绕Expression Blend展开的产业,主要负责为软件公司提供界面设计外包服务。该产业有一部分会与矢量图形设计产业重叠,因为在界面设计中要大量嵌入矢量图形。但要注意,这一产业与传统的Flash界面设计产业是不同的,它所吸引的将是更多的专业软件UI美工,而不是动画设计师。Flash之所以无法形成这一产业是因为Flash的应用程序设计始终停留在初级阶段,到目前为止Flash仍然无法将界面和代码彻底分离,这就直接导致了后期维护成本太高,以至于很多架构师或系统分析师即使有很高的界面需求也不会考虑采用Flash来设计完整的应用程序,而只是插入一些Flash动画来做补充,最典型的例子就是QQ和MSN的动画表情。
当然这两个产业还会带动一些周边的产业,如图形设计培训产业、包装设计产业、媒体等,在这里就不一一介绍了。
总结
从2007年3月份开始,微软将正式开始宣传其下一代开发架构——.net framework 3.0,WPF自然是其中的一个重头戏。在此之后各种推广工作也将陆续展开,UI的革命即将开始,正如Adam在《WPF Unleashed》中所说的:用WPF创造科幻片中的奇幻般的应用程序并非难事。
在看完本文之后,大家可能会有这样的疑问:是不是以后Flash的东西会越来越少呢?当然不是,基于XAML的矢量图形的确会风靡,但不会完全占领Flash市场,Flash在动画设计方面的优势仍然存在,因此充其量只是共同发展的局面。现在还有一个不确定因素就是:微软高度对于这一产业的重视程度,究竟会扶持到什么程度没有人知道,中国市场自然将成为这一产业发展的重头,但从微软总部目前对于微软中国的投入来看,似乎有些悬,至于接下来会发生什么,大家还是拭目以待吧。
以上言论纯属个人观点,有说得不对的地方还大家指正。
版权声明:本文由作者Tony Qu原创, 未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。