2月5-7日QCon全球软件开发大会携手100+位大咖讲师落定北京,点击查看完整日程>> 了解详情
写点什么

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

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

关注

评论

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

5分钟速读之Rust权威指南(三十四)面向对象

wzx

rust

Ubuntu 20.04安装/更新升级后进系统黑屏,屏幕亮度无法调节踩坑记

玏佾

ubuntu Ubuntu20.04 无法进入系统 驱动 屏幕亮度

AI技术在银行内部反欺诈中应用的新思路

索信达控股

人工智能 大数据 金融科技 风控 反欺诈 人工智能模型

33岁公司倒闭,被迫走上大龄Java程序员求职之路

Java架构师迁哥

Hadoop 数据仓库建设实践(理论结合实践)

云祁

hadoop 数据仓库 7月日更

时间管理:通过折叠时间放大时间价值

石云升

读书笔记 时间管理 7月日更

又曝出程序员删库跑路,业界何时能推出互联网企业和程序员之间的约束准则?|话题

三掌柜

话题讨论 话题 话题王者 话题广场

低代码“三合一”模式,解决产品研发系统沟通问题!

优秀

低代码

业务架构模块7 作业 王者荣耀商城异地多活

好吃不贵

业务架构

为什么有些人不喜欢低代码?

优秀

低代码

百度VidPress Sports团队获SoccerNet-v2足球视频理解竞赛双料冠军

百度大脑

人工智能 欧洲杯 足球

碳达峰碳中和目标下,区块链如何赋能能源管理?

旺链科技

党建百年,矛盾论指导架构设计

三石

架构设计

程序员35岁以后就真的要返乡种田了么?如果没田种怎么办?|话题

花花

话题讨论 话题 话题王者 话题广场

🏆 【JVM性能调优】「对象内存分配」虚拟机参数调优分析

洛神灬殇

GC jvm调优 内存分配 7月日更

抑制不住的喜悦!耗时2个月整理的Java面试指南在Github上破百万star!

Java架构师迁哥

“创客北京2021”百度飞桨AI产业创新应用专项赛报名啦

百度大脑

人工智能 大数据

剑指“双碳”目标,浪潮云牵手中科谱光一起做「光谱捕手」

浪潮云

云计算

念念不忘,必有回响!6月更文活动的一些总结

编程三昧

程序员 程序人生 代码人生

阿里JDK源码小册(2021版)火了!下载量超60W次!

Java架构师迁哥

浅谈大数据建模的主要技术:维度建模

云祁

大数据 数据仓库 维度建模 7月日更

CodeDay#7 启动 | 北京欢迎你

蚂蚁集团移动开发平台 mPaaS

小程序 webview 移动开发 mPaaS

Qunar DNS体系建设

Qunar技术沙龙

DNS DNS服务器

同程旅行基于 RocketMQ 高可用架构实践

阿里巴巴云原生

【GOTC 预告】王思宇:从 OpenKruise 看云原生应用负载发展趋势

阿里巴巴云原生

SpringBoot 拦截器妙用,让你一个人开发整个系统的鉴权模块!

陈皮的JavaLib

Java 面试 springboot

收藏吃灰系列!阿里内部“SpringCloudAlibaba学习笔记”这细节讲解,神了

Java 程序员 架构 面试 微服务

HarmonyOS学习路之开发篇——公共事件与通知(二)

爱吃土豆丝的打工人

HarmonyOS 通知事件

Flink运行架构

五分钟学大数据

flink 7月日更

超24W字,2021最新一线大厂Java高级架构师面试题总结,共计480页

Java架构师迁哥

2021值得考虑的一类新型微服务架构:ServiceMesh

BoCloud博云

微服务

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