正在做的一个项目就是用WPF做的。项目初期做DEMO时也是,同时也是CTO推荐的。但是CTO的考虑却和我们不一样。
记得做DEMO时,把东西给CTO看后,得到的反馈之一是,为什么用WPF做这么点儿功能用了这么久?怎么还要写逻辑?
不知道CTO是不是只看过WPF的广告,而没有自己涉足过。似乎在CTO的观念中,WPF是可以极大地减少代码逻辑,增加开发效率的新技术。如果XAML不属于代码的话,前半句算是正确的。但是后半句无论如何是不能做为结论的。要完成功能,就要有逻辑,无论用什么技术,总要把逻辑完整地表达出来。库多做一些,我们少做一些而已。
那么WPF为我们带来了什么呢?
评价总要有个比较的对象,就拿WinForm或MFC作比较好了。
相对于上面的两种技术,WPF高度抽象控件的外观表示,分离了控件的外观与逻辑、同时为分离界面与后台逻辑提供了可能。里面的Command和DataBinding其实就是为此服务的。而Template、Style和Animation等不过是UI抽象的必然附带结果。
由于是新发布的产品,不足也是难免的。最直接的一个就是XAML本身其实就是String,而在当前的Visual Studio 2008中进行重构是不会对XAML进行操作的(除了部分类名),增加了代码维护的成本。比如Spin,Calandar,DataTimePicker,DataGrid,Balloon这些WinForm控件在当前的版本中并没有,.NET 4才会发布几个控件以弥补。现在WPF的缺陷在我的WPF Bug清单系列文章里也有部分描述。
另外,WPF中所推崇的MVVM很好,但是会带来更高的设计与编码复杂度。
大家觉得呢?