50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

Redis分布式锁-觉悟吧,红锁!

知识浅谈

redis分布式锁 8月月更

计算机网络(一、概述)

计算机网络 8月月更

Web3 结算协议 Zebec Protocol 的商业模式与发展前景一览

股市老人

docker下,极速搭建spark集群(含hdfs集群)

程序员欣宸

spark 8月月更

STM32入门开发:编写XPT2046电阻触摸屏驱动(模拟SPI)

DS小龙哥

8月月更

开源一夏 | 使用 Three.js 实现"雪糕"地球,让地球也凉爽一夏

战场小包

JavaScript 开源 前端 3D ThreeJS

Java性能优化的七个方向

小柴说Java

编程 JVM Java性能调优 Java性能优化

【云原生】SpringCloud Alibaba 之 Nacos注册中心实战

Bug终结者

Java 分布式 SpringCloud 8月月更

元宇宙系统源码——测试方案

开源直播系统源码

软件测试 软件开发 元宇宙

春意盎然,适合“二叉树剪枝”

掘金安东尼

算法 前端 8月月更

RocketMQ高可用设计之消息发送重试

急需上岸的小谢

8月月更

面试突击75:SpringBoot 有几种读取配置文件的方法?

王磊

Java 常见面试题

再见MybatisPlus,阿里推出新ORM框架!

TimeFriends

8月月更

要相信自己可以解决问题

FunTester

每日一R「08」类型系统(二)

Samson

8月月更 ​Rust

App切换到后台后如何保持持续定位?

HarmonyOS SDK

都说MySQL单表不要超过2000W行,这是真的吗?

Java全栈架构师

Java MySQL 数据库 程序员 面试

Web3 结算协议 Zebec Protocol 的商业模式与发展前景一览

鳄鱼视界

加码企业服务,阿里云发布计算巢加速器

阿里云弹性计算

PaaS 企业服务 计算巢 ISV

Go-Excelize API源码阅读(十二)——SetSheetVisible(sheet string, visible bool)

Regan Yue

Go 开源 源码刨析 8月日更 8月月更

小菜鸟河北联通上岗培训随笔二

乌龟哥哥

8月月更

[极致用户体验] 用户体验好的 Button,在手机上不应该有 Hover 态

HullQin

CSS JavaScript html 前端 8月月更

干货|语义网、Web3.0、Web3、元宇宙这些概念还傻傻分不清楚?(下)

Orillusion

WebGL 元宇宙 Metaverse webgpu #开源

Java基础之Java枚举

自然

Java core 8月月更

Java基础知识(一些需要注意的点)

自然

基础 8月月更

Web3 结算协议 Zebec Protocol 的商业模式与发展前景一览

BlockChain先知

不是吧,还有人不知道三目运算符的BUG

自然

基础 8月日更 8月月更

CAT认证敏捷团队教练工作坊 (Coaching Agile Teams) | 9月24日开课

ShineScrum

敏捷教练 专业教练 团队教练 GROW Model

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