写点什么

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

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

关注

评论

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

访问控制相关概念及常见模型

龙归科技

身份和访问管理

Golang 泛型浅析

D

开源 云原生 编译器 语言 Go 语言

朱嘉明:《量子时代和数字经济2.0 》推荐序

CECBC

数字经济

新动能 · 新机遇:SaaS软件提供商 Zoho 25 周年战略再升级

科创人

智能取色-为多元化的产品场景选择完美的色彩组合

百度贴吧技术团队

智能取色 个性化 视觉策略 沉浸感

专科出身,2年进入苏宁,5年跳槽阿里,论我是怎么快速晋升的?

钟奕礼

Java 编程 程序员 架构 面试

WebRtc学习之旅 —— 初认识

小驰笔记

零基础学Tableau系列 | 01—Tableau简介、条形图与直方图

不温卜火

数据可视化 数据清洗 4月日更

1.4 Go语言从入门到精通:Go代理goproxy

xcbeyond

Go 语言 4月日更 goproxy

拥抱云原生,基于eBPF技术实现Serverless节点访问K8S Service

UCloud技术

容器 云原生 k8s serverles

2021阿里面试通关手册必备:5000字面经解析(技术/攻克)

比伯

Java 架构 面试 程序人生 计算机

Rust:范型使用trait限定的一点总结

Microwood

rust Trait 范型 范型约束Output Add

2021年金三银四全新版互联网大厂面试题,分类80份PDF,累计4700页

Java 编程 程序员 架构 面试

gorm源码阅读之schema

werbenhu

Go 语言 gorm

Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文

Java redis 程序员 架构 计算机

可能是最糟糕的愚人节玩笑:科技史上的美式疯狂

脑极体

I'm Back

小天同学

思考 个人感悟 4月日更

百家号在线视频编辑器的技术演进

百度Geek说

大前端

Java高级研发:2021阿里天猫、中间件、蚂蚁金服JD要求+面题答案

钟奕礼

Java 编程 程序员 架构 面试

WebRtc学习之旅 —— Android端应用开发

小驰笔记

源中瑞智慧平安社区--为平安生活助力

13530558032

探索js让你的网页“自己开口说话”

云小梦

JavaScript 音视频 audioContext API

美团点评高级1234面:算法+HashMap+Zookeeper+线程+Redis+kafka

钟奕礼

Java 编程 程序员 架构 面试

区块链电子合同--赋能企业数字化转型

13530558032

大厂面试必须掌握的 Linux 性能优化题

倪朋飞

Linux 面试 性能优化

勇做全球区块链“分布式存储”领航

CECBC

分布式

历史命令被黑客删除?教你实时备份

运维研习社

Linux 4月日更 服务器安全

区块链的创新技术给奢侈品行业带来了新的机会

CECBC

奢侈品

莫高窟永不褪色的微笑,照耀在华为未曾止步的数据保护征程

脑极体

从0开始的支付业务架构演进之路

誰敢得罪我

架构培训作业

肖春

架构师训练营

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