.net 慢,众所周之。为什么呢?控件多了就慢了。那最好办法就是减少控件数量,对
于 windows95 的宣传动画,不知多少人还有印象,微软就是希望你看到的所有东西都是
window,所以写了操作系统,就叫 windows。给 window 进行分类,呈现不同的外形和
行为,也就有了我们的 textbox,button,picturebox 之类的控件,控件也就是 window,
只是嵌入在一个顶层的 window 内部的。每个 window,通过消息驱动起来,通过很多的
api 方法操作,设置窗体样式,响应 paint 消息来绘制等等。鼎盛的 win 时代,我们使用
了 vc,c++builder,vb,等众多开发工具,效率都不慢,直到.net 出现,从我个人的认为,.
net 带来的高开发效率主要是来自对窗体的抽象,我们操作属性可以等同对 control 或者
form 进行了 SetWindowText,SetWindowRect 之类的方法,不需要看那些方法了。所
以容易开发。但是,属性之间的彼此联动,链式反应的导致了很多不必要的界面更新,以
及 window 的滥用,会带来大量的创建窗体句柄的开销。所以.net 快不起来。
怎么办?让程序少点控件,每个 form 内最好都没有任何一个控件。那是不是就是最
快了呢。事实表明,这样做的确很快了。于是,我开始编写自己的 FastForm,在这个上
面,我们放置了一个 FastButton 数组,用户可以添加 FastButton,这是轻量级的按钮,
具有按钮的一切功能,外观也一样,不同的是我没时间写个编译器来,只能通过属性来配
置每个按钮的位置,尺寸,等其他属性。点击操作是使用 form 本身的消息,判断点击位
置来实现的。更新 button 属性后,我会根据更新内容,触发 2 个消息:
AppearanceChanged,RectangleChanged 来通知 Form 重绘 bu%er。重绘后更新到
窗体上。这样就实现了窗体的双缓冲,同时,又能实现不创建 window,节省时间和系统
开销。
写完控件,我开始休息了。想看看.net 3.5 有什么好玩的,打开 wpf 教程,大概浏
览了一下。没觉得有啥特别。算了。自己尝试写写 wpf 程序吧,根据例子。编写了著名的
Hello world!。运行了。er。。。没感觉和以前的有区别。等等,我想了一下,莫非.net
的 wpf 也是和我思路一样?为了证实,我启动 spy++,来看看 wpf 的控件都是什么类型
的,我发现,wpf 的 application 其实只有一个 form。Button 是和我思路一模一样,绘
制的一个图形而已。看来我有句话是对的了:“我们每次在.net 框架中做的优秀的框架设计,
在下一个版本里总能找的到,微软会实现的。”还好,并不白做,wpf 还没有.net cf 版本。
传说 12 月就有了,我们试目以待。
我想,基于这种设计,我们把这个设计扩大到 web 上,就可以把窗体上的可视部分
抽出来做一个配置文件,微软的配置文件是 xaml 类型的,好处是 form 内的所有"控
评论1