写点什么

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

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

关注

评论

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

Nacos-Group

平凡人生

必须得会的汽车ECU研发基础--ECU软件架构概览3

SOA开发者

扒一扒面向对象编程的另一面

华为云开发者联盟

编程 面向对象 对象 对象编程

第7章-《Linux一学就会》-Centos8 用户管理

学神来啦

Linux linux运维 linux学习 Linux教程

StartDT Hackathon | 泛元数据:让数据成为资产

奇点云

上汽零束 | 官方有奖征文正式启动,速来挑战!

SOA开发者平台

【编程语言】[Go] Go语言入门

衣谷

golang 协程 GC

netty系列之:分离websocket处理器

程序那些事

Java 架构 Netty 程序那些事

融云 IM+RTC+X「全」通信解决方案,赋能全平台、多语言开发者

融云 RongCloud

通信 技术栈 语言 & 开发

基于云的 CRM 能为您的业务提供哪些服务?

低代码小观

企业管理 CRM

P9都爱不释手!Alibaba9月最新出品776页JDK源码+并发核心原理解析小册

Java 架构 面试 程序人生 编程语言

拒绝裸奔,为 Elasticsearch 设置账号密码(qbit)

qbit

https 安全 Kibana

乌镇回溯 | 构建网络空间命运共同体,旺链科技做了哪些?

旺链科技

数字经济 产业区块链 世界互联网大会

美女程序“媛”:从工程师到架构师,我的代码人生

融云 RongCloud

程序员 代码人生

上汽零束 | 官方有奖征文正式启动,速来挑战!

SOA开发者

万亿养老市场如何抢占商机?云巢智慧康养物联网加速器,三招化解ISV痛点!

华为云开发者联盟

物联网 华为云 iotda 沃土云创计划 智慧康养

Python代码阅读(第30篇):找到列表中的奇偶异常项

Felix

Python 编程 Code Programing 阅读代码

带你了解数仓安全测试的TLS协议

华为云开发者联盟

安全 通信 密钥 SSL/TLS协议 加密通信

Go 语言实现 WebSocket 推送

全象云低代码

websocket 低代码开发 Go 语言

「AI时代下的融合通信技术」专场等你赴约|QCon 2021

网易云信

人工智能 音视频

Automotive SPICE® 汽车功能安全

SOA开发者

被客户像小学生一样训话

boshi

创业

Talk to AI,揭秘背后的语音识别数据

澳鹏Appen

语音 nlp 语音识别 训练数据 语音识别模型

开发实践 —— 教你使用Z-ONE Studio Lite + Digital car创建智能场景

SOA开发者平台

软件定义汽车 流程图绘制工具 数字汽车 汽车SOA

月度发布 | 极狐GitLab14.3升级40+新功能!

极狐GitLab

如何利用国产图数据库打造金融行业方案?

星环科技

译文 | MySQL 8.0 密码管理策略(一)

RadonDB

MySQL 数据库

CRM系统如何帮助你的业务?

低代码小观

企业管理 CRM

多指标异常检测方法综述

云智慧AIOps社区

AIOPS 异常检测 技术学习 智能运维 指标

CRM是什么,你有认真了解过CRM吗?

低代码小观

企业管理 CRM

开发实践 —— 教你使用Z-ONE Studio Lite + Digital car创建智能场景

SOA开发者

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