我在哪里可以找到一个关于如何在Windows窗体中完全实现MVC模式的好例子?

我在不同的网站上找到了许多教程和代码示例(例如,The Code Project和.netheave),但其中许多比MVC更能代表observer模式.由于我想开发的应用程序是用于学校项目的,所以我不愿意使用PureMVCMVC#之类的框架.

推荐答案

我认为,应用程序之间存在巨大差异,我们对如何编写应用程序的理解仍然非常有限.我以前使用过的Windows窗体应用程序彼此非常不同.我看到的一些设计差异包括(包括大多数组合):

  • 直接与数据库通信(2层)
  • 使用为给定应用程序编写的后端(3层)
  • 使用一组为许多应用程序使用而编写的Web服务,这些服务不能为您的应用程序更改.(面向服务的架构)
  • CRUD个操作正在进行更新
  • 正在使用command pattern进行更新(将命令发送到后端服务器)
  • 大量使用data binding/无数据绑定
  • 大多数数据都是"类似表格"(例如发票)的,在标准网格控件中运行良好/大多数UI数据都需要自定义控件.
  • 一个开发人员/由10或20名开发人员组成的团队(仅在UI上)
  • 使用模拟等进行大量单元测试/无单元测试

因此,我认为不可能创建一个始终适合的MVC(或MVP)实现.

我看过的最好的帖子是explaining个MVC和why个MVC系统就是这样构建的,那就是"Build Your Own CAB" series by Jeremy D Miller.工作之后,你应该能够更好地理解你的 Select .

Select MVC/MVP Implementation for a Winforms Project给出一个值得阅读的概述.很多人喜欢PureMVC.我从未用过它,但下次需要MVC框架时我会看看它.

"Presenter First"是一种软件开发方法,它结合了Model View Presenter(MVP)设计模式和test-driven development的思想.它允许您从使用客户语言编写测试开始.例如:

"当我点击‘保存’按钮时

我没有使用"演示者优先"的经验,但当我有机会的时候我会试一试,因为它看起来很有前途.

Other Stack Overflow questions you may may wish to look at are here and here.

如果你想在任何时候使用WPF,看看Model-View ViewModel (MVVM)模式.这里有一个非常好的视频,你应该看看:Jason Dolinger on Model-View-ViewModel.

MVVM (Model View View Model) Design Pattern for Winforms给出另一个选项,如果需要,可以更容易地转换为WPF.Magical.Trevor是Windows窗体的另一个MVVM示例,它还包括基于属性名的自动绑定.


还要问问自己,你正在使用MVC.

  • 您希望能够对尽可能多的代码进行单元测试吗?
  • 您是否试图允许尽可能多的代码被重用?
  • 你是不是想让你的代码库更容易理解?
  • 101对给定项目有效的其他原因.

一旦您明确了您的aims, Select 一个或另一个实现就变得更容易了.

.net相关问答推荐

从Couchbase删除_txn文档的推荐方法?""

等待时 Blazor 服务器按钮刷新

如果只有一个 : 存在于字符串中,则提取冒号后的内容

是否存在指定的(子)索引分隔符?

在 C# 中获取 log4net 日志(log)文件

整个命名空间的SuppressMessage

为 XML 编码文本数据的最佳方法

.NET 世界是否有 Maven 替代方案或端口?

我应该从 .NET 中的 Exception 或 ApplicationException 派生自定义异常吗?

struct 中需要覆盖什么以确保平等正常运行?

图像与位图类

DBNull 的意义何在?

何时在 C#/.NET 中使用指针?

react 式扩展使用的好例子

C#中的T是什么意思?

在 .NET 中计算目录大小的最佳方法是什么?

如何正确和完全关闭/重置 TcpClient 连接?

判断 .NET 中的目录和文件写入权限

Microsoft.Bcl.Build NuGet 包有什么作用?

C# 应用程序中的资源和嵌入式资源有什么区别?