将进酒,杯莫停

闲来无事,在CSDN上闲逛了一下,看到孟岩、韩磊两位老兄所写的《这一天终于来了》以及《“这一天终于来了”》,还有孙辉先生发表的《WPF,一次洗牌…》。顿时感到这一天真的来了,随着无数传教士(Evangelist)在全球范围内的摇旗呐喊,大家逐渐从站在远观望而慢慢围拢,WPF从远观之物变为亵玩之物也。

孟夫子、韩老兄,将进酒,杯莫停! 与君歌一曲,请君为我侧耳听!beerbeer

在韩磊老兄的文中提到孟岩曾经说过:“战术上成功,战略上失败——以后谁还肯为Windows做应用……”。但开心有不同意见,因为要想开发WPF,或者想运行WPF,机器上必须有.NET 3.0,而可以安装.NET 3.0的机器只有Windows XP(SP2+)、Windows Server 2003(SP1+)、Windows Vista以及Windows “Longhorn” Server。所以随着WPF应用的普及,这些操作系统也会逐渐普及。从而维护Windows的霸主地位。其实慢慢琢磨一下也可以看出来,微软的全套开发产品均是服务于Windows以及Office两大产品线的。大旗一竖,无数英雄豪杰聚集在其下。如果将Linux看作Windows桌面端的竞争对手,那么现在Linux平台上的应用缺少是一个无法逃避的事实。窃以为:IBM投资Eclipse实在是一个明智之举。

另外,韩磊也提到了另外一个感想,即Expression套件的直接竞争对手是Adobe,这有些短视了(韩磊莫怪)。当然,不可否认,很多受众,包括开心自己,在第一次看到Expression的演示时,都会有这种感觉。这与Adobe的产品线实在是太平衡了,简单就是短兵相接。但研究越久,越会发现,这种观点实在是有些太小看Bill Gates了。Bill Gates创建微软时曾经有一个梦想,要让每家每户的桌子上都有一台电脑,而且这台电脑上运行微软的软件。从1975年开始,整个微软就在为这个观念而奋斗。历史发展到21世纪,软件从当初注重性能(硬件的限制)、功能(大而全的软件)而逐步发展到更加注重用户体验。之所以出现这种趋势,是因为软件已经逐渐走下神坛,成为人们日常生活中所不可或缺的。而人们对日用品的选择标准就是:价廉物美。价廉促使SaaS产生,而物美导致软件厂商对于用户体验的重视。

正是在这种大势之下,微软才会推出WPF对整个软件生态链催熟。WPF的出现解决了三个问题:

  1. 更快速的开发更丰富的用户体验:使用WPF,可以在更加快速的时间内开发出来更加丰富的界面,满足用户的需求。所以我感觉孙辉先生学习WPF有些误入歧途,长此以往,会走火入魔的。如果仅仅是使用控件,建议您还是使用GDI+或者ASP.NET或者MFC等等就够了。WPF之所以有那些控件,我个人认为主要是为了向下兼容。WPF的目标应该是消除控件,让您开发出来的软件根本看不出来控件的特征,软件世界再也不是由Button+Textbox组成的怪物了。请注意左图,此款使用WPF开发的应用程序,你还能看到哪部分是控件吗?
  2. 消除用户界面差异:也请注意左图,这就是一款使用WPF开发的应用程序,而且它是以IE为宿主的。如果只是看这部分截图,你可以区分它是Windows Application还是Browser Applicaiton吗?历史在1995进入一个鸿沟,开发人员突然变成了两大阵营:B/S开发人员以及C/S开发。而现在到了应该弥补这个鸿沟的时候了。WPF正是背负着这个历史责任;
  3. 软件开发团队的协作问题:软件开发团队的日常协作是一个非常大的问题,除了需求变更以外,第二个影响开发进度的就应该是团队协作性了。在软件团队中,我们比较熟悉Developer、DBA、Tester、IT Pro、Architect等。Designer可能往往被我们忽视,但实际上,Designer的工作成果才是与客户距离最近的。而且Designer与Developer如何配合工作,是很多团队所头疼的,而WPF正可以解决此问题。这儿对孙辉先生再说一句:XAML并不是WPF的另外一个名字,它是使用声明性编程方式实现WPF的一种文件格式。

我最近疯狂迷上了一些美国科幻剧:《24》、《Lost》、《Prison Break》、《Heros》、《The 4400》,在里面经常会有一些使用电脑软件的镜头,而且那些软件界面真的越炫(Lost中那个只能输入4 8 15 16 23 42的不计入内),曾经记得Jack Bauer的那个PPC与电脑同步的镜头,让我感觉在Redmond看研究院的同事做Demo一般。或者随着WPF的出现,这种炫界面的应用程序会很快进入我们的日常生活当中了!

孟夫子,韩老兄,将进酒,杯莫停!!

打赏作者

“将进酒,杯莫停”的30个回复

  1. 非常同意你的看法,界面的改进与软件的大众化同样是大势所趋,很早就有人研究用Flash与Win32程序通信来作为程序界面了,现在有了WPF,效率问题也解决了。

    我觉得MS这三个软件与adobe的那三个根本没有对抗,因为面对对象不同,操作的习惯也不同,ms这三个都是面对程序员的,操作有种顺序性,adobe那几个面向艺术人员,操作是断续的,所以不是程序员的美工们估计不好习惯ms这几个程序^_^

    PS:我转载这个文章去CnBeta了

  2. To keke7:希望转载的时候按照版权加上超链接,非常感谢。
    其实Expression三套件(以后或者是四套件)本质上是面向Designer的:),而不是开发人员,开发人员使用的应该是Cider for Visual Studio 2005.

  3. 开心大哥的有些观点偶不太赞同.
    首先控件在WPF里面仍然是"first citizen",WPF并不是要取消控件,而是要实现控件的外观和其操作完全隔离,WPF提倡一个叫做lookless control的概念,也就是’"无外观控件’",你可以通过定义样式(styling)和控件面板(control templating)来定义一个控件的外观,这和传统的win32或是windows forms的控件自定义方式是完全不一样的.
    在WPF里面,你要很多种方式来定义一个控件的外观:
    1. 通过OnRender()方法.这种方式和windows forms种的方式非常相似,就是通过图形输出API来绘制控件的外观,在WPF里面,Image、 Shape、Border等控件都是通过这种方式来定义外观的。
    2. 通过Control Template.也就是通过定义控件的面板来定义其外观。这种方式是最灵活,也是WPF提倡的一种做法。
    3. 通过Visual Layer编程。WPF里面的所有具有外观的控件都有一个visual tree,你可以把Visual看成是一种具有一定图形外观的类。你可以重写VisualChildrenCount属性和GetVisualChild()方法来定义一个控件的visual集合,从而达到定义其外观的目的。

    在CSDN的帖子里面,我还发现很多人对WPF与win32的联系有点不太清楚。首先WPF的线程模型仍然采用win32的STA模型,再者WPF仍然采用信息模型。采用这种模型的目的是为了能和其他程序更好的兼容。尤其是当你需要在WPF程序里面宿主win32, ActiveX, MFC,或是Windows Forms控件的时候尤为重要。但是WPF做得相当出色的地方就是WPF把这些线程模型和信息循环的APIs都封装在Dispatcher里面,DispatcherObject提供了一套更灵活的API来访问信息循环和实现线程同步。

    Sheva

  4. To Sheva:请参阅我的原文:让您开发出来的软件根本看不出来控件的特征,软件世界再也不是由Button+Textbox组成的怪物。
    使用控件也只是为了向下兼容而已。

  5. 跟着M$走吧,眼睛只用盯着UI,光编程不够了,还要会当designer,明知designer不是本行,却还要凑脸上去给客户打,或者说一辈子只作个framework user or UI coder吧,或者说不在乎怎么贬值,只要有一口饭吃就够了。

    是的,将进酒,杯莫停,程序员们,该想想自己的核心技术能力是什么了,什么是你可以干而别人不能干的?你们的创造性在哪里,难道就只在UI 上?

  6. 楼上的……..
    一辈子只作个FrameworkUser or UI Coder是和你从事的具体工作有关系的, 和MS没有什么关系. 正是你要做这方面的应用, 才会选择MS. 做行业应用你想从OS开始做起么. 以后程序员的分工会越来越细. 我对门的那个大妈也一直搞不清我搞软件开发和那些计算机维修的有什么区别呢…….

  7. 大家看看vista吧。
    有多少功能是mac几年前就有了的。
    连ms的标志上都加上了os特有的aqua。

  8. @wonsore
    你的这个观点我不认同,不知道你用过mac osx没有,我一直在用这个系统。wpf虽然在用户感受上确实很像苹果系统,但目的只是为了让用户能有更好的用户感受,作为web2.0的时代最强调的就是以用户为中心,所以wpf的出现我认为是很正常的事情。而且wpf的除了用户感受上类似苹果,技术上完全不同。

  9. Pingback: inzaghi
  10. 何来抄袭mac一说? 殊途同归而已,没有必要如此较真。
    人类生存史上本来就是在不断模仿大自然来进步的,照你这么说,我们人类不要模仿算了,何来文明的进步?
    小到操作系统也一样。

  11. 我说Expression的三个套件,是直接与Adobe的三大产品竞争,并非信口开河:

    1、Expression主要设计人员来自Adobe公司;
    2、三个产品都有明确的Adobe产品对应;
    3、在Adobe的战略中,Flash(及Flex)将是未来RIA的主力,而Interactive则是利用WPF的力量,实现微软(Gates?)理念中的RIA。这个才是重要的部分。

    我感觉,要达到开心所说的Gates的理想,与Adobe竞争,未必不是手段。正如不能因为Gate的远大理想,就认定IE和Netscape当年不是竞争关系一样。

    至于开心提到的团队协作,在我的文章中是主要部分。而这也可能是Adobe三大产品的(目前的)最大隐忧。而WPF及其代表的系统平台级的支撑,也将让Adobe头疼。

    另外回复一下keke7。如果你试用了Expression,就知道,它可不是纯粹“为开发人员设计的”,Image Designer和Web Designer,对于设计人员来说,也是非常不错的工具,足以取代Illustrator和Dreamweaver了。

  12. @韩磊:
    与Adobe的竞争关系,应该是实施WPF中的一个无法回避的事情。但微软的主要目的应该不是与Adobe竞争。现在是百花齐放的时代,一个软件公司无论在哪个方面做业务,总是难免遇到竞争者。
    Expression Interactive Desiger主要是为设计人员使用的,在即将发布的下一个CTP/Beta中,你会发现Expression ID已经不支持C#代码开发了,点击Code-behind文件,会直接打开Visual Studio 2005.

  13. 一口气看完发现太牛X了.

    一个.net的人多一个mfc人的好不保留的批驳.

    IE就是孙辉先生的锄头,没了IE,孙辉先生便要沉默了吧.

  14. @ roydu:
    非常抱歉让您有这种感觉,我没有任何对孙辉先生或者其他朋友不敬的意思,如果让您有这种感觉,我愿意诚挚的向您或者孙辉先生道歉。
    发表本篇文章只是想阐明我自己对于WPF的一些看法或者感觉,这些看法或者感觉可能有不对的地方,希望得到各位的指正或者批评。

  15. WPF 的出现到底能让开发人员完成哪些以前完全不能做到的事情?

    What’s wrong with Button + Textbox? 要是实在不喜欢,用 image button 呗。
    WPF 的出现就是为了消除控件?

    从 DOS 到 Windows 3.1, Windows 95, Windows 98, Windows 2000, Windows XP 到 Windows Vista,
    button 从方的变成圆角的,从 2D 的变成 3D 的,从不带阴影的变成带阴影的…
    后来又变成方角的,又变成 2D 的,又变成半透明的…
    这些是用户最关心的么?

    多数 *企业* 用户在使用 *商用* 软件处理 *数据* 时,关心的从来不是界面炫不炫,控件有没有边框/阴影,
    他们(首先)只在乎*业务流程*是否正确,而*业务流程*首先就是通过 UI 交互表现出来的。
    很多人不屑于 UI 设计,但其实连 *UI外观设计* 和 *UI交互设计* 的区别都没搞清楚。

    听上去我好像对 WPF 不是很热衷么?恰恰相反,我觉得 WPF 很有潜力。

    我的观点是, WPF 能帮你做到的事情,即使技术上你用现在的技术都能实现,但 WPF 也会极大地降低某些技术门槛。
    就像当年的VB的出现一样,并非在VB之前开发不了Windows程序,也不是有了VB之后 C/C++ 程序员就没饭碗了,
    而是VB的出现极大地降低了Windows程序开发的门槛,让更多的人都能够进入这一领域,让更多的人可以更专注于行业知识,
    而非技术实现本身 —- 但决不是把 button 变成 3D。

    LZ 这段话是正确的。
    “(WPF的出现解决了)更快速的开发更丰富的用户体验:使用WPF,可以在更加快速的时间内开发出来更加丰富的界面,满足用户的需求。”
    如果程序员只是想着怎么把以前的窗口变成半透明,或者加上几段小动画,那真是可惜了 WPF 了。
    我认为重点是如何利用 wpf 的优势更好地为用户实现 (business) data visualization。
    比如 LZ 举的例子里面,我看到的重点不是button变成了image从而消除了控件,而是wpf帮我直观地看到我如何定制要买的车。

    另外,微软远没有把所有的事情做完,相反,开辟了更大的空间让所有发挥想象力。
    在大家觉得 office 创新该终结的时候,office 2007 的界面有了重大突破,而且不是简单把 menu 变成了 image,
    而是改变了很多 UI 交互方式,visualize 了用户要进行的操作。
    发挥想象力,也许下一次的创新将是你的设计。

    顺便说一句,我也喜欢很炫的界面,包括半透明的效果,我也喜欢 windows+tab 的 3D 效果,
    但是前提是它真的更有效地实现了我要它做的事情。

  16. 不要只是把用户挂在嘴上,而是放在心里,那么很多问题很好理解
    开心,kw2006说得很好

    能不能告诉我们那个图片是哪个网站,我环境具备,想体验一下

  17. 没有wpf也能做出这个图的效果,有wpf也未必做出来都是这个图的效果,这只是一个精心制作的广告而已。
    wpf能不能得到广泛支持还是个问题。
    wpf想在企业开发中得到广泛应用,取决于.net framework3.0的装机量,而。net framework微软甚至没有提供完整的安装包。所以,微软根本就不希望大家在xp上使用wpf.
    微软是不负责任的公司。不要把希望寄托在微软身上。
    微软是不考虑客户利益的。微软考虑的永远只有它自己的利益。

评论已关闭。