这两天在作AutoUpdate,就是基于SmartClient方式的,客户端自动升级程序。本来我可以采用BITS(MS的一个service,WindowsUpdate即是基于它做的)来作,但是BITS有一个毛病。。。这个毛病等有时间在写。
作AutoUpdate,我做了大约7个component UI,然后有5、6个utils,和一个mainform。每个ui之间不直接进行通讯,而是通过delegate把这个事件“上浮”,一直浮到某个“控制者”手中。在我的代码中,就是浮到了mainform上,然后由winform再调用适当的ui的某个方法把这些事件传递回去。这种方式,非常象proxy模式,或者说,很象.net remoting的远程通信模式。
看了严宏的书,我猛然想起来,这个功能是完全可以用“责任链”来作的。我的应用基本上符合责任链的定义:消息或转发或扬弃、mainform负责每个ui的事件的调度。但是这种方式有一个很大的缺点,事件上浮造成的成本比较高。从我的感觉就能看出来,编码成本高、维护成本高、效率低。书中说,可以采用观察者模式来解决这个问题(他举的是j2ee中AWT1.0和1.1实现的差别)。
晚上再看看吧!
2003年12月28日 8:54