写点什么

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

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

关注

评论

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

找一个更好的理由

史方远

职场 成长 工作

“四个维度” 讲明白什么是微服务!

攀岩飞鱼

微服务 单体系统 架构设计 团队组织 康威定律

高仿瑞幸小程序 09 云数据库初体验

曾伟@喵先森

小程序 微信小程序 大前端 移动

JVM源码分析之Object.wait/notify实现

猿灯塔

JVM

决战下半场:小程序技术助力金融APP重回C位

FinClip

小程序 数字化转型 app重构

一篇文章搞定Java处理Excel的各种疑难杂症

知春秋

Java Excel POI

如何在 Mac 上优雅的截图和录屏

Winann

macos 效率 效率工具 Mac

零基础如何学架构

兆熊

架构

服务发现:ZooKeeper vs etcd vs Consul

Tux Hu

Docker 容器 微服务 etcd Consul

网站系统架构演进

Janenesome

读书笔记 程序员 架构 系统设计

游戏发行中学到的重要经验(严肃长文)

谢锐 | Frozen

独立开发者 游戏开发 游戏出海 移动互联网

Web3极客日报#140

谢锐 | Frozen

区块链 独立开发者 技术社区 Rebase Web3 Daily

elasticsearch源码解析(一)——restapi

罗琦

elasticsearch 源码分析 RESTful

谈谈双亲委派模型的第四次破坏-模块化

寻筝

Java JVM

游戏夜读 | Scikit-learn的2018自述

game1night

Java实现Base64

Java

为什么软件开发很难外包

刘华Kenneth

外包 DevOps 风险 背锅

看完这篇HTTP,跟面试官扯皮就没问题了

苹果看辽宁体育

https okhttp

经历过疫情,你懂得了什么

Winann

疫情 个人成长 生活 成长

Azure App 部署Django 和 PostgrSQL

yann [扬] :曹同学

Python azure

谈谈控制感(4):损失的后果很严重

史方远

职场 心理 成长

Leetcode 556. Next Greater Element III

隔壁小王

算法

奔腾吧,“后浪”李子柒!

无量靠谱

网红

程序员的晚餐 | 5 月 15 日 如果不写代码了,那就开个饺子店

清远

美食

回“疫”录(17):返宁的前一天

小天同学

疫情 回忆录 现实纪录 纪实

数列找规律的问题

oldj

数学

战略懒惰有多可怕

Neco.W

创业 重新理解创业 初创公司

初次见面

KAMI

阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南

古时的风筝

Java规范 Java开发手册

记一次MHA切换故障踩的坑

一个有志气的DB

MySQL 高可用 复制 主从同步 故障分析

浅析 - CocoaLumberjack 3.6 之 DatabaseLogger

Edmond

ios sqlite log4j CocoaLumberjack DDLog

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