QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

  • 2010-08-23
  • 本文字数:1013 字

    阅读完需:约 3 分钟

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

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

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

IView – 针对 View 类的接口。

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

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

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

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

框架中包含了基本的类和接口,我们可以对其进行扩展以适应应用程序。这些类和接口包括 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

2010-08-23 07:326291
用户头像

发布了 340 篇内容, 共 131.3 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

D1-H 开发板——哪吒 开发入门

贾献华

7月月更

深入浅出边缘云 | 1. 概述

俞凡

架构 边缘计算 网络 深入浅出边缘云

IntelliJ IDEA使用

GalaxyCreater

Java IDEA

基于 Web SDK 实现视频通话场景 | 声网 SDK 教程

声网

视频 SDK 教程

STM32+ESP8266+MQTT协议连接阿里云物联网平台

DS小龙哥

7月月更

最新的swoole-cli已可以支持Windows,手把手带你在windows体验swoole

迷彩

swoole 服务器开发 7月月更 swoole-cli

界面设计四大原则

空城机

设计模式 7月月更

一时跳槽一时爽,一直跳槽一直爽?

KEY.L

7月月更

Vue Router 守卫

程序员海军

Vue 7月月更

查策,查策,python字体反爬再一次实践

梦想橡皮擦

Python 爬虫 7月月更

【Go实现】实践GoF的23种设计模式:观察者模式

元闰子

Go 设计模式 观察者模式 Go 语言

openEuler 资源利用率提升之道 01:概论

openEuler

开源 openEuler 内核 资源管理

多线程&高并发(全网最新:面试题+导图+笔记)面试手稳心不慌

冉然学Java

Java 编程 多线程并发 高并发系统 资料分享

做一个有职业操守的软件匠人

Bruce Talk

技术 敏捷 TDD Agile

mysql进阶(十九)SQL语句如何精准查找某一时间段的数据

No Silver Bullet

MySQL 7月月更 精确查找

LibcarePlus 用户态热补丁技术那些事

openEuler

安全 openEuler 漏洞 #开源

python小知识-代码规范最佳实践

AIWeker

7月月更 pyhon小知识

Java开发环境配置 / Vscode搭建

攻城狮杰森

Java jdk 7月月更

开源分布式链路追踪对比

穿过生命散发芬芳

链路追踪 7月月更

阿里onedate分层思想

奔向架构师

数据中台 7月月更

视频号加强打击低俗内容:对违背公序良俗的内容必须赶尽杀绝

石头IT视角

springMvc参数获取

沃德

Java 7月月更

类的基础

GalaxyCreater

图的存储结构与方法(二)

乔乔

7月月更

OSI模型第一层:物理层,基石般的存在!

wljslmz

物理层 网络技术 OSI模型 7月月更

Docker安装Elasticsearch、ik分词器、可视化工具

宁在春

Docker Elastic Stack 7月月更

Protocol buffers 的问题和滥用

HoneyMoose

接口测试

Xd

接口测试工具

MySQL数据库索引

技术小生

索引 7月月更

节流和防抖的说明和实现

南极一块修炼千年的大冰块

7月月更

JAVA编程规范之建表规约

源字节1号

后端开发

WAF和Caliburn:两种WPF应用程序框架_.NET_Abel Avram_InfoQ精选文章