【发布时间】:2013-05-11 22:21:18
【问题描述】:
给定:
- 我们的组织有一个标准的窗体应用程序
- 表单和业务逻辑交织在一起——即Autonomous View。我们知道自治视图模式使编写单元测试变得困难。目标是采用单一表单并将表示逻辑与表单本身分离,以便我们拥有一个独立的域实体/对象,可以更轻松地针对它编写单元测试。
- 我们没有进行完全重写。我正在研究一种渐进的方法,允许单独处理一个屏幕。
- 经过一些研究,我认为Presentation Model 模式或MVVM 模式最适合这个组织的工作方式。
- 该组织通常更喜欢较少的间接层,因此更简单(即使不太健壮)更好。
- 从过去到现在的过渡应该是公式化的(易于教授任何已经熟悉内部概念的开发人员)。这就是为什么他们希望坚持使用 Windows 窗体而不是 WPF 等其他新技术。
- 域模型对视图(表单)一无所知。该表单将完全了解域模型的更改。这使得 2 层间接。再多 1 个就可以了(这就是我允许 MVVM 的原因)。
我发现的大多数 MVVM 示例都说明了它如何与 WPF 配合使用,而不是与普通的旧 Windows 窗体配合使用。
两个问题:
考虑到这一切,我所说的有没有让你认为我没有走上正确的道路或者我走错了路?我希望向管理层提出一些建议。
最后,你知道一个很好的在线代码示例可以帮助我充实原型吗?
【问题讨论】:
-
winforms 不支持 MVVM。 MVVM 实际上是专门为 WPF 创建的,主要基于 Martin Fowler 的 Presentation Model
-
如果您希望 winforms 支持 MVVM,您将需要一个基于 winforms 的框架,支持诸如 (Real) DataBinding、DataTemplates、DataTriggers 等。没有这些概念,MVVM 就无法存在。没有这样的框架,所以你必须自己创建它。这是一项巨大的努力,无论如何都没有任何意义。这就像为 QBasic 创建一个 Windows UI 框架。
-
感谢 HighCore。我敢肯定,那里有一种混合(或替代方法)可以做我所要求的事情(即使 WPF 是 MVVM 的自然伴侣)。我很想知道任何想跨过这座桥的人的见解。
-
MVP 模式将更适合您的要求,并且可以逐步实施。
标签: .net winforms design-patterns mvvm separation-of-concerns