Silverlight 3这个版本刚释出时,让人感到惊艳的新功能很多,但要说哪一项技术可以彻底改变和提升开发人员与设计师之间的合作方式,并且能够达成真正的模块化并且提高程序代码重用性,对于Silvelright应用程序(或网站)的开发有着决定性的关键影响,那非Behavior技术莫属了。
几乎我的所有朋友(和客户们),对于Silverlight加入这个新功能无不大加赞许,它一举解决了过去designer(设计师或美术人员)和developer(程序设计师)长期的合作与沟通问题,找出了一个可以让设计师和开发人员好好沟通并且互相配合的方式(这部分是Behavior对于Designer的价值);同时,这个技术也提供了另一种系统开发的可能性,让不具备高度程序开发技术的开发人员,也可以撰写出自己需要的系统,并且让软件重用性大幅提升(这部分则是Behavior对于Developer的价值)。
Behavior可以把一些常用的行为封装成可重复使用的组件(Component),这个组件从技术面来说,当然只是没有外观的一组类别(Class),而开发人员或设计师可以在Blend 3当中将这个类别的对象实体(instance)『套用(Hook)』到某一个控件上,使得套用了该Behavior的控件可以不须撰写任何程序代码,就可以立即拥有(达成)一些和使用者互动的行为。
例如说,当我们把『拨放动画』这一个Behavior套用在Button这个对象上之后,当用户点选(Click)Button,则动画就自动被拨放了,不用写程序,使用起来就跟拖曳控件一样自然。这让设计师(Designer)有机会可以独立的建置Silvelright应用程序,一扫过去设计师必须时时刻刻依赖开发人员而无法独立运作的窘境。
这也让我们有机会把『行为』对象化。请注意,在传统的面向对象程序设计观念中,过去我们只把UI层的需求组件化成为控件,而现在我们则可以进一步地把实现(达成)特定功能的代码段,例如发一封信、拨一段动画、将窗体上的数据存入数据库…等『动作』,也组件化成为『行为』(其实上在Silverlight中有Action和Behavior这两种实现方式可供选择,容后说明)。
如此一来,除了设计师之外,若开发人员擅用Behavior机制也将可以让整个Silverlight应用程序的设计更加的结构化与对象化,我们可以把常用的『动作』封装起来重复使用,由资深程序设计师来设计Behavior,而初阶或是UI的程序设计师则负责使用这些Behavior来开发程序。
在理想状况下,Designer(设计师)或domain expert(特定领域的专家,例如财会人员、HR人员、或MIS)甚至可以完全不需要具备程序设计的观念,只需要了解基础的事件(Event)观念,就可以顺利的开发出一套系统,若需要实现特定的功能时,可商请developere为他们开发所需要的Behavior,designer只需要取得这些Behavior并使用即可。
理想状况离现实很遥远吗?一点也不,依据我实际针对企业讲授Silverlight课程的经验来看,Behaivor几乎掳获所有Designer和domain expert的心,甚至我们几乎可以期待这样的概念衍生到Windows Form/Web Form的应用程序开发当中。