孟岩在他的帖子中写道,当看到微软的人秀出Expression时,他感慨地说:“这一天终于来了”。他说这句话时,我就坐在旁边,且也和他有同感。
Expression包括了Web Designer、Image Designer和Interactive Designer三个软件,分别对应Adobe的三个王牌产品:Dreamweaver、Illustrator和Flash。Interactive Designer让开发者(设计人员?)方便地创建基于WPF或WPF/E的互动应用,孟岩帖子中提及的重大改变,主要是指这个产品代表的意义而言。Web发明已有16年历史,作为一种展现手段,它完全有可能、也应该被新的展现手段所替代。Flash、ActiveX、AJAX,无一不是在努力扩展web平台的计算能力,但平台本身的缺点,却限制了更丰富的表现效果,同时也制约了应用开发。以AJAX为例,需要同时兼顾服务器端程序、通讯模型和页面脚本,特别是页面脚本,相信做过AJAX应用的人都会明白,编写、调试是多么麻烦的事情。不管是WPF或是Flex,都代表了以后富客户端的方向——数据和表现分开,提供良好的渲染引擎和计算能力,提升客户端用户体验及开发方便性。
其实孟岩在现场还说了另外一句话。我问他对于Expression套件的看法,他说:“战术上成功,战略上失败——以后谁还肯为Windows做应用……”在战术上,Expression套件的推出,将对Adobe的三个重要产品构成极大威胁。为什么这么说?首先是因为Expression套件,被很好地整合到集成开发环境(Visual Studio)当中,开发人员和设计人员,是在一套解决方案里面工作,分工明确、各司其职。在Web应用开发过程中,设计与开发格格不入是一直存在的问题。美工设计的页面,需要程序员去做控件分解和重组,在这个过程中,常会导致原来期望的页面效果产生不想要的变化。Expression让设计人员和开发人员工作于同一环境,甚至可以采用结对工作(不是结对编程)的方式,管表现层的表现层,管逻辑的管逻辑,而又能无缝地组合到一起。
Interactive Designer是最能体现这个思想的软件。切换、动画等页面效果,可以完全由设计人员控制(View),开发人员负责逻辑部分(Controller和Model)。举例来说,如果页面上有一个按钮,点击后在服务器端执行一系列计算,返回一个整数值,这个整数值决定了一个球体的旋转角度。以往我们需要怎么做呢?在ASP.NET应用中,实现手段会相当烦琐。使用Interactive Designer,设计人员负责画出这个按钮和球体,利用时间轴、关键帧工具定义球体旋转动画,并利用属性编辑器把球体旋转动画绑定到按钮事件上。与此同时,开发人员打开同一个页面文件,双击这个按钮,在VS.NET中用C#编写服务器端程序,返回合适的整数值即可。再以Web Designer来说,可视化CSS设计、Web标准支持等,都超越了Dreamweaver。
Expression套件的可怕之处在于,它将带来Web应用(和富客户端应用)开发过程的巨大变化。界面和逻辑分开的前提,是它们能够无缝整合,Expression提供了让界面开发和逻辑开发无缝整合的手段——至少在ASP.NET和基于WPF的富客户端应用中是如此。
以目前发布的预览版本来看,Expression套件的完成度相当高,基本具备发行条件。多位工程师从Adobe跳槽到微软,更是曝露了该套件针对Adobe的野心。大量基于Windows平台的应用(因为受限于Vista的缘故,目前也许仅是ASP.NET应用)开发项目应该会很快采用Expression来代替Adobe的产品。
有兴趣的读者,可以访问http://www.microsoft.com/expression获得更多信息和下载试用版。还可以在这个地址下载到纽约时报的FirstLook阅读器,该阅读器基于WPF,相信会给网络媒体带来新的阅读体验震撼。