推荐序一.
2006年年底,WPF(Windows Presentation Foundation)刚刚随着Windows Vista正式发布的时候,我在中国软件网(http://www.csdn.net)上闲逛,看到两位软件业界资深人士孟岩、韩磊两位老兄针对WPF发布所写的《这一天终于来了》以及《“这一天终于来了”》两篇文章,还有孙辉先生发表的《WPF,一次洗牌……》文章,感慨良多。随着无数业界技术专家在全球范围内的摇旗呐喊,WPF终于开始进入主流视野。
如今事隔一年多,市面上已经有越来越多WPF相关的图书,也有越来越多的开发人员通过搜索引擎、论坛、博客等逐渐熟悉了WPF,WPF已经逐渐成为主流开发选择。但是,仍然有很多朋友对于WPF的定位感到疑惑,毕竟微软在用户交互界面端有太多的新技术。要想真正领会掌握WPF,我们必须先搞明白WPF的定位,也就是为什么微软会推出WPF?
比尔·盖茨在创建微软时曾经有一个梦想——要让每家每户的桌子上都有一台电脑,而且这台电脑上要运行微软的软件。从1975年开始,整个微软就在为这个梦想而奋斗。历史发展到21世纪,应用软件从当初注重性能(硬件的限制)、功能(大而全的软件)而逐步发展到更加注重用户体验。之所以出现这种趋势,是因为软件已经逐渐走下神坛,成为人们日常生活中所不可或缺的东西。而人们对日用品的选择标准就是:价廉物美。价廉导致S+S(Software plus Service)产生,而物美促使软件厂商对于用户体验越来越重视。
正是在这种大势之下,微软才会推出WPF对整个软件生态链催熟。WPF的出现解决了以下3个问题。
(1)更快速的开发更丰富的用户体验。使用WPF,可以在更短的时间内开发出来更加丰富的界面,以满足用户的需求。WPF的出现,使得我们可以逐渐远离使用控件搭积木开发用户交互界面的开发过程。虽然WPF目前仍然保留控件机制,但我个人认为主要是为了向下兼容。WPF的目标应该是消除控件,让你开发出来的软件根本看不出控件的特征,软件世界再也不是由Button+Textbox组成的怪物了。
(2)消除用户界面差异。历史在1995年进入一个鸿沟,开发人员突然变成了两大阵营:Browser/Server(B/S)开发人员以及Client/Server(C/S)开发。一个项目启动时,我们首先想到的是这个项目是使用B/S架构还是C/S架构,这两种架构各自有各自的好处,但对于开发人员的知识要求却完全不一样。使用B/S架构,要了解HTML语言以及HTTP协议等;使用C/S,你可能要了解套接字,要了解GDI+等。同样,在项目完成后,如果基于某种原因,需要将此软件架构进行改变。比如将一个C/S项目重新发布为B/S项目,那么对于整个开发团队来说,基本上相当于推倒重来。而现在到了应该弥补这个鸿沟的时候了。WPF正是背负着这个历史责任,同样一套编码,可以根据你的需要发布C/S架构(Windows Client应用)或者B/S架构(XBAP,XAML Browser Application)。
(3)软件开发团队的协作问题。软件开发团队的日常协作是一个非常大的问题,除了需求变更以外,第二个影响开发进度的就应该是团队协作性了。在软件团队中,我们比较熟悉开发人员、数据库管理人员、测试人员、运维人员、系统架构师等,而用户交互界面设计师或者说设计人员往往被我们忽视,但实际上,他们的工作成果才是与客户距离最近的。不过就现在的实际情况来说,设计人员与开发人员如何配合工作,是很多团队所头疼的,而WPF正可以解决此问题。因为WPF创造性地引入了XAML语言,开发人员以及设计人员使用这种统一的XML描述的语言进行沟通,将大大降低沟通成本。另外,微软原来为开发人员提供了功能强大的开发工具,也就是Visual Studio系列,而随着WPF的出现,微软也开始面向设计人员提供相应的设计工具:Expression Studio系列。这两套工具所使用的解决方案以及项目结构描述完全一致,也就是完全可以打开对方所创立的项目文件。
如果你浏览一下目前的Windows平台上的软件界面,它们基本上都大同小异,同样都是矩形的窗体,窗体上都是以矩形的控件进行排列。相信已经有很多朋友开始审美疲劳了。不知道有多少朋友在观赏那些好莱坞产的科幻大片时,陶醉于电影主角所使用的更自然更酷的软件交互界面。现在,掌握了WPF,你也能很容易地开发出这种下一代的软件交互界面了。
现在,这本由Adam Nathan所编著由瞿杰等三位译者翻译的《WPF揭密》就摆在你面前,掌握了它,你也就掌握了通往未来的钥匙……
王洪超
互联网策略资深顾问..
微软(中国)有限公司
2008/3/3于北京
推荐序二
我第一次接触到WPF(Windows Presentation Foundation)是在MSDN的一段视频上。这段视频演示了如何通过简单的操作来改变控件倾斜角度,轻松地实现一些绚丽的特效。当时,它给我的感觉就是,这将是未来界面设计的方向!
我真正开始使用WPF是在2006年。由于在微软工作的关系,近水楼台先得月,我很早就体验了WPF的beta版。使用之后的切身感受就是,参照一些例子就可以开发小程序,这非常简单,但是想要开发具有出色界面的程序就十分困难——不是 WPF难用,而是不知道怎么用!虽然当时有一些MSDN文章可以参考,但是缺乏系统的讲解。我依葫芦画瓢编写出了XAML,但不知道为什么会得到那种结果,这让我陷入了一种知其然而不知其所以然的窘境。WPF拥有很多新概念,比如“Dependency Properties”、“Routed Events”、“Logical Tree”以及“Visual Tree”等,如果开发人员只会使用这些概念,而没能系统深入地理解它们,必然会受制于它们,更无法开发出高效、绚丽的WPF界面。
2007年,当我准备系统学习WPF的时候,看到这本书,稍稍翻看了几页,顿时眼前一亮,如获至宝。书中把我心中困惑已久的一些问题阐释得清晰明了,还通过很多例子让WPF的学习过程变得非常轻松。我,从此踏上了轻松惬意的WPF之旅。
可能有人会说MSDN够用了,不需要再看其他的书。我认为这句话只对了一半!MSDN的确是一本百科全书,包罗万象,但是如果你要从头学一门新技术的话,MSDN并不是最合适的。你需要的是一条平坦的学习之路,需要的是一位能由浅入深、循序渐进指引你的导师,那么本书就非常适合。
.本书的前几章着重解释WPF的基础技术,第11章~第14章是一个升华——告诉你WPF能开发出如何绚丽的界面,让你每读完一章就有一种跃跃欲试的冲动,甚至每读完一章就会觉得以前应用程序的界面是多么的普通乏味。最后3章是对WPF的一种补充、一种扩展、一种延伸。如果你要真正精通WPF,要成为WPF高手,那么这3章应该是必看的。
在本书的帮助下,我完成了我的一个字典应用作品,参加了微软2007年的“Microsoft酷炫应用争霸赛”,并且幸运地获得了第一名。这第一名无疑就有这本书的功劳,所以当微软的同事瞿杰(Tony Qu)邀请我为其中文版写序的时候,我义不容辞地答应了。
瞿杰为本书的中文版付出了辛勤的劳动。我们经常在回家的路上讨论WPF技术问题,甚至于很多次坐车坐过了站。他对英文术语的中文翻译十分严谨,斟酌再三,尽量使用大家熟悉的中文术语;对于新的术语,也通常会在中文后面带上对应的英文。
当阅读了完稿后的中文版后,我觉得他无数的不眠之夜没有白费。全书保留了英文版的原汁原味,从字里行间可以看出他的一贯严谨。
如果你已经迫不及待地要开始WPF之旅,开始下一代的酷炫界面开发,那就准备好你的开发环境,翻到第一章吧!...
夏炯贤
“Microsoft酷炫应用争霸赛”第一名获得者
微软员工2007 GPGP(Great People, Great Performance)
EMC高级软件工程师
2008.1.10于上海