C# 关于WinForms应用程序MVC模式的建议

C# 关于WinForms应用程序MVC模式的建议,c#,winforms,model-view-controller,mvp,C#,Winforms,Model View Controller,Mvp,我正在编写我的Mac应用程序(C#Winforms)的Windows版本,并希望得到一些关于使用何种设计模式的建议 我的Mac应用程序使用MVC模式,核心数据用于存储。这是模型和关系的简化图: 桌面应用程序在后台线程上收集日志,并定期将其上载到我的web应用程序。数据库用于存储用户的帐户信息和日志,应用程序有3个视图来显示(和收集)用户数据 我读了一些书,似乎MVP是WinForms应用程序的推荐设计模式,但我不确定如何从这里开始。我认为我的应用程序非常简单,可以在不使用MVC这样的外部框架的

我正在编写我的Mac应用程序(C#Winforms)的Windows版本,并希望得到一些关于使用何种设计模式的建议

我的Mac应用程序使用MVC模式,核心数据用于存储。这是模型和关系的简化图:

桌面应用程序在后台线程上收集日志,并定期将其上载到我的web应用程序。数据库用于存储用户的帐户信息和日志,应用程序有3个视图来显示(和收集)用户数据

我读了一些书,似乎MVP是WinForms应用程序的推荐设计模式,但我不确定如何从这里开始。我认为我的应用程序非常简单,可以在不使用MVC这样的外部框架的情况下编写,但因为我以前从未制作过WinForms应用程序,所以我只是在猜测


有人能推荐最好的方法吗

你应该看看杰里米·米勒的《打造你自己的驾驶室》系列:

模式实际上只是它试图解决什么问题的指南。如果MVC适用于依赖页面和重定向等的web应用程序,winform应用程序可以从使用MVP中获益

已经说过,这两种模式是更广泛的UI模式的兄弟,甚至根据Martin Fowler的说法,MVP模式可以进一步分割。看看他的照片,对合适的图案有一个良好的感觉。他打破了MVP,成为了监督控制员和被动观察者。甚至新的MPF MVVM模式实际上也是基于PresentationModel模式的


我想说的是,看看这些模式,看看什么是合适的,而不是因为在另一个场景中使用了一个模式而尝试使用它

根据我对winforms应用程序(支持良好的数据绑定)的经验,您可以将MVC与监控控制器模式结合使用。通读这个问题&

开始做它,做一些屏幕模型,做一些设计,写一些代码

您可以从一些小型原型开始,尝试不同的设计。在你的探索阶段不要走得太远,这样你就可以毫不犹豫地扔掉它,如果你需要的话重新开始

尽量让你的选择保持开放,不要让自己陷入困境,推迟这个决定,直到你真的需要选择一种方式而不是另一种方式


到那时,你可能会更好地了解你需要什么。

如果我必须做WebForms,我会选择MVP:说得对。不要为模式选择一个问题,而是选择一个模式来解决问题。