写点什么

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:326842
用户头像

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

关注

评论

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

mysql进阶(二十七)数据库索引原理

No Silver Bullet

MySQL 聚集索引 8月月更 非聚集索引 覆盖索引

全国独家 | 上海线下面授大规模敏捷LeSS认证 | 2022年12月8-10日

ShineScrum

less 大规模敏捷 LeSS认证 大规模敏捷LeSS

【数据挖掘概论】数据挖掘的简单描述

晴天

8月月更

前端常考react相关面试题(一)

helloworld1024fd

React

企业的数字化转型到底是否可以买来?

雨果

数字化转型

JS逆向入门学习之回收商网,手机号码简易加密解析

梦想橡皮擦

Python 爬虫 8月月更

告白数字化转型时代:麦聪软件以最简单的方式让企业把数据用起来

雨果

数字化转型

入门 Polkadot 平行链开发,看这一篇就够了

One Block Community

区块链

手写分布式配置中心(1)

分享干货的你

java; spring-boot SpringCould 签约计划第三季

区块链或者智能合约开发的 5 种最佳编程语言

devpoint

区块链 以太坊 8月月更

语音社交软件开发——充分发挥其价值

开源直播系统源码

软件开发 直播系统源码 语音聊天

数据中台建设(十):数据安全管理

Lansonli

大数据 数据中台 8月月更

电竞、便捷、高效、安全,盘点OriginOS功能的关键词

极客天地

头脑风暴:完全背包

HelloWorld杰少

8月月更

动态内存开辟(C语言)

孤衫

编程语言 C语言 动态内存 8月月更

面试点:Java 中 hashCode() 和 equals() 的关系

TimeFriends

8月月更

工业物联网 —— 新型数据库的召唤

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

《MySQL入门很轻松》第2章:MySQL管理工具介绍

乌龟哥哥

8月月更

IO流篇 -- 基于io流实现文件夹拷贝(拷贝子文件夹及子文件夹内文件)满满的干货

Bug终结者

Java static 8月月更

创建一个 Dapp,为什么要选择波卡?

One Block Community

区块链

2022前端秋招vue面试题

helloworld1024fd

Vue

【LeetCode】最大层内元素和Java题解

Albert

LeetCode 8月月更

开源一夏|OpenHarmony如何查询设备类型(eTS)

坚果

开源 HarmonyOS OpenHarmony 8月月更

长达四年的减肥记录

Amazing_eve

#开源

手写柯里化 - toString 理解

掘金安东尼

JavaScript 前端 函数式 8月月更

深入理解 Istio 流量管理的超时时间设置

万猫学社

云原生 istio envoy Istio流量管理

克服项目管理中恐惧心理

踏雪痕

项目管理 8月月更

Discourse 清理存储空间的方法

HoneyMoose

STM32+ULN2003驱动28BYJ4步进电机(根据圈数正转、反转)

DS小龙哥

8月月更

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