AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

日更2.0|全新挑战,奖品升级,1月月更正式开启!

InfoQ写作社区官方

1月月更 热门活动

前后端数据校验和接口测试就没我 JSON Schema 干不了的活!

CRMEB

AWS S3 最小目录权限(qbit)

qbit

对象存储 AWS S3 权限

当云服务变成云云云云服务,谁能带领企业穿越云层?

白洞计划

以一致的体验交付和管理云原生多集群应用

阿里巴巴云原生

阿里云 云原生 KubeVela OCM 交付

c/c++Linux开发高级架构师进阶指南-剑指腾讯T9

Yt

腾讯 C/C++ 后端开发 Linux服务器开发

阿里云 MSE 云原生网关助力斯凯奇轻松应对双 11 大促

阿里巴巴云原生

阿里云 云原生 MSE 斯凯奇

Java Jackson 中如何 Pending JSON 对象到数组中

HoneyMoose

基于Paddle Serving&百度智能边缘BIE的边缘AI解决方案

百度开发者中心

飞桨

【网络安全】文件上传绕过思路

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

全球最大规模中文跨模态生成模型文心ERNIE-ViLG来了!

科技热闻

央视频“数字雪花”互动项目上线,为全民打造冰雪体育盛宴

郝俸🦁好棒

从本科退学,到再拿本科,2021我的5年技术“弯路”回轨了|1.2w字

杨成功

程序员 前端 盘点2021

音视频开发:FFmpeg时间戳详解

赖猫

音视频 ffmpeg

恒源云(GPUSHARE)_云GPU服务器如何使用FinRL?

恒源云

算法 框架 PyTorch

Apache APISIX 社区双周报 | 功能亮点更新进行中

API7.ai 技术团队

开源 云原生 API网关 社区 Apache APISIX

第五周作业

lv

【盘点 2021】义无反顾,投身福报,我的2021年度总结

Zhendong

阿里巴巴 年终总结

APICloud 入门教程窗口篇

YonBuilder低代码开发平台

前端 APP开发 APICloud 跨端开发

基于机器学习和深度学习,华为大佬手写AIoT系统学习小册

Java全栈架构师

Python 数据库 程序员 AI 面试

聚焦高质量发展,AI创业企业如何释放数智新潜力?

脑极体

如何在零停机的情况下迁移 Kubernetes 集群

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生 数据迁移

06 Prometheus之exporter及查询持久性

穿过生命散发芬芳

Prometheus 1月月更

云原生实战派:2021 让改变发生,2022 让创新升级

阿里巴巴云原生

阿里云 云原生 年度盘点

回顾 2021 | 开启全职开源的奇妙冒险

郭旭东

开源 总结

2021年12月云主机性能评测报告

博睿数据

Python原生数据结构增强模块collections

Java全栈架构师

Python 数据库 程序员 数据结构 面试

盘点|2021最受开发者欢迎和最具行业影响力的文章

阿里巴巴云原生

阿里云 开发者 云原生 年终盘点

博睿APM获《金融电子化》2021年金融业新技术应用创新突出贡献奖

博睿数据

揭秘阿里云神龙团队拿下TPCx-BB排名第一的背后技术

阿里云弹性计算

大数据 阿里云 神龙

LabVIEW目标测量方法(基础篇—12)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 目标测量方法 目标尺寸测量

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