WAF和Caliburn:两种WPF应用程序框架

WPF应用程序框架(WAF)和Caliburn是两种开源框架,它们基于模型-视图-视图模型(MVVM)模式,使用分层的架构,为开发者提供了编写WPF和Silverlight应用程序的基础。

WAF使用了模型-视图-视图模型(MVVM)模式,这与Martin Fowler定义的PresentationModel非常类似。WAF使用了这种模式,我们可以使用下面的UML图来对其进行描述:

Model-View-ViewModel Pattern

View – 这个类中包含了所有GUI小工具,但不包括状态和行为。

IView – 针对View类的接口。

ViewModel – 其中包含了GUI小工具的状态和行为。之所以将那些元素保存与此,是为了避免将应用程序的代码放在GUI界面程序中,从而我们可以很容易地把应用程序迁移到不同的GUI系统中。ViewModel可以通过它的接口与View交互。

Controller – MVVM模式中没有提到控制器,但是WAF中包含了一个,它的职责是指引程序的流向。如果需要的话,ViewModel在变更的时候会通过事件通知Controller。

Model – 底层的领域类。在Model中的改变会通过事件发送给View或者ViewModel。

WAF是按照分层的思想构建的,如下所示:

layered-architecture.png

框架中包含了基本的类和接口,我们可以对其进行扩展以适应应用程序。这些类和接口包括Controller、IView、ViewModel、Model以及大量文件对话框和消息服务类。框架中还带有一些代码示例,包括图书馆、电子邮件客户端以及面向文档的应用程序,另外还带有对单元测试的基本支持。WAF已经由用户jbe2277提交到CodePlex上,该用户没有声明他是谁,但看起来应该是微软的模式与实践中智能客户端团队的开发人员。

Caliburn是另一个开源的WPF和Silverlight框架,它也是围绕MVVM模式构建的。这个项目的站点上提到了以下特性:

  1. 将数据绑定扩展为方法,使得MVVM架构更加简单和直观。
  2. 为MVVM动作添加了前置/后置执行过滤器和修复程序。
  3. 通过对co-routines的强大实现,简化了异步编程。
  4. 提供了支持通用的UI角色——像Screen Activator、Screen Conductor、Screen Collection以及Application Controller——的基础类。
  5. 改善了从配置方法向架构解决方案转变的协议。
  6. 通过为WPF提供强大的数据绑定验证框架支持TDD。
  7. 使WPF和Silverlight架构能够使用相同的API。

在很多方式上这个框架与WAF都非常类似,但它更加成熟,并且拥有上百个类和接口。其中还带有Silverlight和WPF示例,像联系人管理器和游戏库。 Caliburn由Blue Spire为其提供支持。

查看英文原文:WAF and Caliburn: 2 WPF Application Frameworks

你可能感兴趣的:(WAF和Caliburn:两种WPF应用程序框架)