zoukankan      html  css  js  c++  java
  • WPF——微软的UI革命

    转载
    上次我写了一篇《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本身的灵活性是很好的,从理论上讲它可以描述任何想要描述的东西,这里面自然也包括矢量图形。

    目前微软正在加紧开发一整套基于XAML和WPF的矢量图形解决方案,并将包括在一个叫做Microsoft Expression Studio软件套装中,在这个软件套装中有Expression Web, Expression Blend, Expression Design, Expression Media。详细的信息,大家可以去看看http://www.microsoft.com/products/expression/en/default.mspx。在这里我先对这四款软件做一下简介:

    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在动画设计方面的优势仍然存在,因此充其量只是共同发展的局面。现在还有一个不确定因素就是:微软高度对于这一产业的重视程度,究竟会扶持到什么程度没有人知道,中国市场自然将成为这一产业发展的重头,但从微软总部目前对于微软中国的投入来看,似乎有些悬,至于接下来会发生什么,大家还是拭目以待吧。


    以上言论纯属个人观点,有说得不对的地方还大家指正。

    Feedback

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-24 12:24 by webabcd
    嗯,好文

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-24 14:03 by Cat Chen
    在评论MS最新的产品线时,最好你亲自实际使用过,对工具和方法有一定了解了,再写文章,否则跟着MS引发的主流观点来推销,最终就会被证明是曲解了的,这是我的个人观点。

    举个老的例子,例如ASP.NET 1.0推出时,别说正式版,就Beta2,Web Form这个名词已经吹得很响亮。最终呢?我们现在用ASP.NET 2.0的还有开口闭口就说Web Form的吗?还会跟着MS的推销口号一起向身边的人介绍“以后Web开发就如Win一样可以拖放控件般简易”了吗?我们已经不这样说了,甚至连MS自己也不敢如此说了。

    再往前一些的例子,刚刚有.NET这个名字的时候,连MS自己也说不清楚.NET是什么,只是让我们都觉得好像“将来”(也就是现在)的应用都是通过网络连接起来的,其中绝大部分能够从Web Service享受到便利。于是,什么都改名为.NET,例如.NET Passport啦,Windows .NET Server(现在的Windows 2003)啦……结果呢?

    现在轮到WPF和Expression了,很多人在自己的blog上发表的推介文章都是人云亦云的,没有实际用过Expression系列就跟着MS的官方简介在吹,做了MS的免费市场推广还没赚到一分钱。

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-24 14:11 by Cat Chen
    俗话说,MS的产品第一代相当于beta,第二代开始能用,第三代开始腾飞。

    Expression Web Designer,是Frontpage的后继产品,算算Frontpage 98开始至今第5代了,当然强大,对CSS支持非常好。我在自己的blog里面都大大地推介了它一番,因为我用它设计了几个纯CSS的模板,感觉非常好用。

    至于Expression系列另外两个Designer呢?Blend Designer的beta我用过,真的很一般,你能够用它来可视化设计,但完全没有什么方便设计人员的地方,如果Frontpage 98一样。MS自己都不清楚设计师要怎样的软件,所以第一代产品其实就是beta,看看大家怎样去使用,然后再考虑下一代如何引入方便用户的功能。

    很多人都在自己的文章中眉飞色舞地形容XAML背后有Blend Designer的支持啊,有多好的发展前途啊。你去用一下Blend Designer,看清楚那“支持”是达到什么级别的再说啦。能够拖放和设置一下属性就算支持,这样的工具除了可视化没有任何的便利可言。

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-24 14:39 by 航天奇侠

    确实,即使是微软,也需要经过市场的长期考验。

    但是,从概念上来讲,确实有很大的发展空间,虽然从现有技术的成熟的对比来说,还不是有什么优越性。

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-24 14:50 by Tony Qu
    @Cat Chen
    你说的对,我最近太忙了,春节长假都要值班(上个星期照常上班,昏过去)。我打算在接下来的两个月里好好学习一下Expression Design和Expression Blend,当然还有WPF。我自己的工作机上已经装好了,可惜还没来得及用,只是初步看了看,界面倒是很漂亮的,与Flash MX 2004的界面有点类似,特别是界面的质感方面。

    有兴趣一起研究Expression Blend和Expression Design请与我联系

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-24 16:47 by JesseZhao
    Expression Web Designer
    真个看看去

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-24 20:31 by Jeffrey Zhao
    asp.net“降低”开发的门槛,但是也塑造了千千万万低劣的项目……

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-24 20:39 by Tony Qu
    @Jeffrey Zhao
    主要还是人的问题,要做出优秀的东西不可能只靠优秀的工具。

    不过市面上的一些低级ASP.NET书籍有误导读者的嫌疑,很多书籍都使用了asp.net自带的功能,但却不考虑性能和架构的问题,似乎这年头出版社只知道赚钱,也不把把关,nnd谁都能做技术作者。。。唉

    # re: WPF——微软的UI革命[未登录]  回复  更多评论   

    2007-02-24 21:37 by Koy
    @Tony Qu
    说得很好,同样也说明了asp.net是一个非常容易入门的工具,多数人都在做入门级项目,入门级的东西自然就是。。。。呵呵!

    # re: WPF——微软的UI革命[未登录]  回复  更多评论   

    2007-02-24 22:48 by ocean
    记的第一次用flash是8年前,当时做了一段20K的很简单的flash放到网站首页,结果打开用了20多分钟,当时还在考虑这个东西怎么发展呢?那时还没有adsl,不知道什么叫做宽带,很多人在拨号,少数人ISDN,只过了不到两年,我就用了adsl,这时发现20K的flash实在很小,第一次看到下载的时候字节数达到两位数,非常的惊讶。现在flash已经太常见了,也没人置疑它的加载速度问题了。
    任何一样新生的技术都需要时间的检验,为什么flash出来的时候很多人说太慢,没法发展,为什么winxp出来的时候很多人说win2000已经很好了,用xp那个界面不是浪费资源吗(好像现在Vista也是这种声音)。怎么现在这种声音没了?
    眼光而已!
    千万别小瞧了WPF

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 00:56 by 萧林
    同意ocean
    还记得第一次装xp 根本跑不起来 还是win98好
    心想这玩意怎么可能推广

    今天vista出来了 几乎面对相同的问题

    微软买vista至少要买5年
    那么推出的时候 就尽量要兼顾这5年内的机器基本配置

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 01:02 by Tony Qu
    是啊,微软要推的东西肯定推得成功的,再说操作系统本来就是它的本行,自然是囊中之物阿。。。

    不过这次推Vista最乐还要数硬件厂商。。。。

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 01:29 by 在线信息空间
    经过一段时间的学习,认为WPF确实将会在UI界面上带来革命,真的也许软件界面将只限于想象力。但说实话,Expression Blend 加 VS 2005的开发对机器要求真高,受不了。还是用回Delphi Vcl.Net做UI层,快且方便,套用广告语就是“实在”。WPF的应用,等过两年吧,Delphi也许能对开发带来WPF一些帮助。

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 01:36 by Tony Qu
    @在线信息空间
    我们讨论的问题好像与机器要求没啥关系吧,又没有说一定要用Aero咯,没明白你的意思。

    Delphi早晚要退出市场的,总架构师都被ms挖过来了,还作个屁阿,Borland早点关门算了。

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 05:26 by deerchao
    照楼上的说法,微软被Google挖了那么多的人,微软也该关门了:)

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 09:11 by JesseZhao
    @deerchao
    估计他们也都是互相挖吧
    另一种层面的技术交流,嘿嘿

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 09:16 by Tony Qu
    @deerchao
    走到几个打杂的算啥啦,有总架构师还有systeminternals的Mark在,除非Bill也被挖走,倒是可以关门了。你要不发封信给billg@microsoft.com问问吧,看看他有没有走的意向,呵呵

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 09:21 by 小木[匿名]
    BTW:

    http://www.microsoft.com/products/expression/en/default.mspx
    这个地址的链接好像有问题~~
    :)

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 09:54 by Cure
    @Tony Qu
    微软想推什么就一定能成功?太绝对了吧
    感觉微软现在已经尽显疲态了。

    # re: WPF——微软的UI革命  回复  更多评论   

    2007-02-25 11:13 by 冬冬
    总是被微软牵着鼻子走,不过觉得MS的东西好使是好用,但是为了兼顾易用性,反而把有些东西作的很复杂……
  • 相关阅读:
    Nginx 启用gzip压缩
    HTTP压缩的过程
    什么是HTTP压缩及HTTP压缩的过程
    Fiddler抓包工具总结
    HTTP内容编码和HTTP压缩的区别
    LINQ query on a DataTable
    C# Collection for "most recently used"
    Keep timer (setInterval) running while reloading page
    Is there a way to detect if a browser window is not currently active?
    Force Logout users if users are inactive for a certain period of time
  • 原文地址:https://www.cnblogs.com/cxd4321/p/655846.html
Copyright © 2011-2022 走看看