AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

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

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

关注

评论

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

【LeetCode】求众数 IIJava题解

Albert

算法 LeetCode 11月日更

2021DevOps国际峰会·北京站|龙智展位盛况回顾

龙智—DevSecOps解决方案

DevOps Atlassian

在推荐几款ins视频和图片下载器,支持安卓和苹果

So...

Instagram ins ig ins视频和图片

苏杰:爆款产品是把基本动作做到位的结果

博文视点Broadview

「The Monthly Echo」十月社区成长回顾

SphereEx

数据库 开源 ShardingSphere 技术沙龙 SphereEx

dubbo 配置 loadbalance 不生效?撸一把源码

捉虫大师

dubbo

渣渣二本的辛酸面试之路:从深圳到杭州,从外包到蚂蚁金服

android 程序员 移动开发

Redis 核心篇:图解 Redis 为什么这么快

码哥字节

redis 后端 Java 分布式 11月日更

滴滴DoKit Android核心原理揭秘之函数耗时,app架构图怎么做

android 程序员 移动开发

Vue进阶(幺伍捌):vue组包 CssSyntaxError unclosed bracket 错误解决方法

No Silver Bullet

Vue 11月日更

【Flutter 专题】20 图解 ListView 下拉刷新与上拉加载 (三)【RefreshIndicator】

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

lims实验室管理系统是什么?实验室信息管理系统介绍!

低代码小观

企业管理 管理系统 LIMS实验室信息管理系统 LIMS系统 信息管理系统

工程师什么时机最合适选择跳槽?

程序员泥瓦匠

面试 加薪 跳槽 升职

告警风暴来袭,智能运维应如何化解?

云智慧AIOps社区

AIOPS 告警 技术学习 智能运维 时序数据

kubernetes系列随笔01:云原生发展

Geek_cd6rkj

Kubernetes 云原生 弹性

图解Java线程状态转换

程序猿阿星

Java并发 线程 线程状态

手把手教你从零开始搭建个人博客,20分钟上手

老表

Hexo 个人博客 服务器 教程分享 11月日更

滴滴国际化项目 Android 端演进,一个小例子彻底搞懂Android的MVP模式到底是什么

android 程序员 移动开发

Eureka 源码之启动过程

悟空聊架构

Eureka 源码剖析 悟空聊架构

生成式AI,引领AI从“换脸”到“造脸”

海比研究院

Gartner发布2021企业低代码魔力象限,Mendix连续三年第一!

J2PaaS低代码平台

低代码 数字化 低代码开发平台

Mac 系统如何利用软链接在根目录创建文件夹?

程序员泥瓦匠

Mac 文件写入

渣本转岗,从Java到Android,这一年我经历了太多太多,移动开发者大会

android 程序员 移动开发

漫谈MVVM(1)ViewModel_DataBinding核心原理,kotlin开发安卓游戏

android 程序员 移动开发

这一次,解决Flutter Dialog的各种痛点!

小呆呆666

flutter ios android dart dialog

Python代码阅读(第51篇):判断给定的数是否在给定的范围内

Felix

Python 编程 Code Programing 阅读代码

一招教你快速打造企业级数据可视化大屏

云智慧AIOps社区

开源 大前端 数据可视化 大屏可视化 大屏

满足你各种姿势的最美Android开源日历,android音频

android 程序员 移动开发

滴滴开源DRouter:一款高效的Android路由框架,androidui开发工具

android 程序员 移动开发

使用 Spring Boot 和 @SpringBootTest 进行测试

码语者

Spring Boot 测试 test

第四模块作业-设计千万级学生管理系统的考试试卷存储方案

彦欲

架构训练营

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