2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

Dragonfly 发布 v2.1.0 版本!

SOFAStack

AI 算法 后端 基础设施 分发

可视化数据分析工具是什么?可以用来做什么?

巷子

【我和openGauss的故事】原生openGauss与Oracle数据库函数兼容性对比验证测试

daydayup

甭提ChatGPT了,这个新的AI助手将永远改变人们的工作方式

互联网工科生

人工智能 AI 机器人

面部表情识别技术的挑战与解决方案

数据堂

【我和openGauss的故事】一文帮你理解openGauss的高可用方案

daydayup

面部表情识别在医疗领域的应用

数据堂

AIGC 浪潮下,鹅厂新一代前端人的真实工作感受

CODING DevOps

以商业大数据技术助力数据合规流通体系建立,合合信息参编《数据经纪从业人员评价规范

合合技术团队

人工智能 大数据 商业化

【我和openGauss的故事】openGauss 主备架构及同步复制模式理论学习与验证测试

daydayup

通义千问开源模型部署使用

WizInfo

通义千问

ARTS 打卡第 1 周 鸿蒙入门开发教程:一文带你详解工具箱元服务的开发流程

坚果

ARTS 打卡计划 HarmonyOS OpenHarmony 元服务 ArkTS

【我和openGauss的故事】在Kylin桌面版操作系统中配置openGauss的ODBC数据源

daydayup

【我和openGauss的故事】Navicat连接openGauss_5.0.0 企业版数据库

daydayup

巧用Maya轴心操作小技巧,工作事半功倍!

3DCAT实时渲染

maya制作技巧 3D软件教程

实现分布式事务:Java与MySQL的XA事务协调

树上有只程序猿

Java MySQL 数据库 分布式 XA

从推动到拉动:研发效能提升的第一性原理

CODING DevOps

中国信通院高质量数字化转型产品及服务全景图发布,合合信息多项AI产品入选

合合技术团队

人工智能 数字化转型

【我和openGauss的故事】openGauss5.0在某省医保局实时数仓应用

daydayup

openGauss数据库源码解析系列文章——安全管理源码解析(四)

daydayup

大型集团公司如何打破“信息孤岛”问题?

优秀

打破信息孤岛 消除信息孤岛 信息孤岛

腾讯云大数据ES:结合AI大模型与向量检索的新一代云端检索分析引擎

腾讯云大数据

ES

UE虚幻引擎游戏开发:游戏鼠标双击判定方法!

3DCAT实时渲染

UE虚幻引擎 UE教程 3D游戏制作教程

【我和openGauss的故事】openGauss5.0特性:CM支持VIP仲裁特性

daydayup

面部表情识别技术在安全领域的应用

数据堂

openGauss-graph 0.2.0版本正式上线

daydayup

openGauss数据库源码解析系列文章——安全管理源码解析(三)

daydayup

IoTDB 小白“踩坑”心得:入门安装部署篇

Apache IoTDB

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