10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

案例驱动 :从入门到掌握Shell编程详细指南

百思不得小赵

bash 运维 6月月更

本周二晚19:00战码先锋第6期直播丨共建测试子系统,赋能开发者提高代码质量

OpenHarmony开发者

OpenHarmony

Java开发培训之设计模式UML类图

@零度

JAVA开发 UML

强推10款Python常用的开发工具

左手の明天

Python ide python开发工具

【LeetCode】出现次数最多的子树元素和Java题解

Albert

LeetCode 6月月更

我的远程办公经验 | 社区征文

五分钟学大数据

初夏征文

告别手写,使用 Doc View 快速生成接口文档

程序员小航

IDEA 插件

文旅新体验!3DCAT助力广州非遗“元宇宙”街区炫酷亮相

3DCAT实时渲染

非遗 元宇宙 实时云渲染

Wallys/Routerboard/DR8072A-HK09/IPQ8072A/802.11ax

wallys-wifi6

802.11AX WIFI 6e

福昕软件重磅发布福昕高级PDF编辑器12.0

联营汇聚

el-table 分页全选功能讲解

CRMEB

IAST 初探:博采众长、精准定位、DevOps友好

SEAL安全

DevOps 安全 IAST 应用安全测试 开源软件供应链

知识管理——知识经济时代的增资利器

小炮

Webshell检测引擎:青藤开放200个雷火SaaS版免费账号!

青藤云安全

安全攻防 网络安全 攻防演练

SREWorks v1.2 版本发布 | 运维市场能力发布

阿里云大数据AI技术

大数据 运维 云原生 开发运维

APICloud 实现文档下载和预览功能

YonBuilder低代码开发平台

文件 APP开发 APICloud

低代码实现探索(四十三)前台对象数据树

零道云-混合式低代码平台

DOM核心——Element类型

大熊G

JavaScript 前端 6月月更

读书笔记之:麦肯锡高效工作法

甜甜的白桃

读书笔记 读书 笔记 6月月更

Java技术培训之设计模式七大原则

@零度

设计模式 JAVA开发

数据平台调度升级改造 | 从Azkaban 平滑过度到 Apache DolphinScheduler 的操作实践

白鲸开源

Apache 大数据 开源 workflow

C#入门系列(二十) -- 面向对象之封装

陈言必行

C# 6月月更

TiDB 性能分析&性能调优&优化实践大全

TiDB 社区干货传送门

OLAP分析型应用场景中,数仓中vacuum为何对列存表无效

华为云开发者联盟

数据库 后端 存储 华为云

基于集群的动态反馈负载均衡策略

No Silver Bullet

集群 6月月更 负载均衡策略

2022年秋季广州美博会-2022广州9月份美博会

Geek_0b38bb

2022年广州美博会 秋季广州美博会 美博会 广州美博会

大数据培训Flink之Table API 与 SQL

@零度

flink 大数据开发

通过一个具体的例子,讲解 SAP Cloud Platform Integration(CPI) 的使用方法

汪子熙

Cloud 系统集成 SAP 6月月更 cpi

【愚公系列】2022年06月 通用职责分配原则(八)-中介原则

愚公搬代码

6月月更

vivo 容器集群监控系统架构与实践

vivo互联网技术

云原生 监控 系统架构 Prometheus

开源生态|超实用开源License基础知识扫盲帖(下)

Orillusion

开源 WebGL 元宇宙 Metaverse webgpu

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