由于之前自己做了一套框架,但是还没有趋于完善,所以暂时不准备共享出来(主要是WPF和Silverlight版本更替比较频繁且没有加入模板及智能感知)。对于开发一套MVVM框架,具体需要做一下几个操作:
1,要能解决Model、View和ViewModel之间的强关联,这也是核心功能,尤其是View和ViewModel,不管是使用IOC Container还是MEF都行。
2,命令和附加事件的处理,对Command进行封装,满足多参数、方法过滤、泛型、异步回调等,对附加事件进行封装,使它像使用命令一样简便。
3,由于View和ViewModel是弱关联或者是无关联,如何让它们进行通信?这就需要加入Messenger机制。
4,前面引入了消息机制(一般是静态化处理),如何来管理、实例化、清除消息呢?这里得建立一套消息机制。
5,由于前面采用了弱关联或者无关联,并且引入了消息机制,所以需要对操作有日志记录,否则出了问题无法快速定位及追查原因。
6,如何统一管理ObservableObject、PropertyObserver等这些对象呢?所以得自己建立一套变更体系。
7,对常用功能及操作进行封装,提供一些常用类库以及UI Helper等。
总之,开发MVVM框架不能求全,只要适合项目就行,也不要想一次就能完善整个框架,在使用时不断根据需求扩展才是明智之举。另外附加三点开发MVVM框架心得:
1,充分借鉴其他开源框架,研究各个框架的不足和优势,然后把思想贯穿于自己的框架中,当然有些常用功能代码也可以直接借鉴过来。
2,对于这样一个比较庞大的框架,使用TDD+反复重构无疑会提高开发效率,同时也能提高框架的可维护性和稳定性,这也是团队使用的一个前提。
3,框架会使用一些常用设计模式,有了它们可以让框架更具有扩展性,同时也减少了开发成本、增加了可维护性。比如观察者模式(消息的发布、订阅、触发)、中介者模式(直接通信的类转化为中间类来处理,隔离耦合)、外观模式(提供一个简单的接口出来,在内部进行大量的封装,这样就可以起到易用且功能强大的目的)、装饰模式(原来已经稳定的功能模块,如果在不改变原有结构的基础上进行扩展,无疑这是一个很好的实践)等。
总结
上篇WPF企业内训全程实录(上)主要讲解历史渊源、概念引入、基本阐述以及WPF的每个知识点。这篇主要主要围绕WPF开发模式、WPF团队协作和MVVM框架三个议题进行阐述。下篇将着重强调结合其他技术共同打造WPF项目、相关性能优化、以及部署与更新问题,所以敬请期待!另外如果有不懂的地方也可以参考之前写的WPF 基础到企业应用系列,最后声明一下,由于圣殿骑士才识浅薄,所以以上观点只是个人的看法与心得,遗漏和错误之处也敬请海涵。怀着技术分享与交流的态度分享出来,希望各位多多