【问题标题】:Which architecture pattern for a desktop application should i use?我应该使用哪种桌面应用程序架构模式?
【发布时间】:2019-07-05 12:13:00
【问题描述】:

我打算用 C# 开发一个简单的桌面应用程序(一个带有小型数据库的基本 crud),我不知道使用哪种模式。在这种情况下,哪一个是正确的? 这些是我知道的模式:

  • MVC
  • MVP(模型视图演示)

非常感谢????

【问题讨论】:

  • 您想使用哪种技术? WPF、UWP、WinForms、...?
  • ????,,Windows窗体
  • 你不应该考虑这样的事情,除非有理由你应该考虑这个,在这种情况下你需要解释原因。这可能是一个简单的过度思考的案例。

标签: c# design-patterns architecture desktop-application mvp


【解决方案1】:

如果应用程序真的很小,不要使用模式。尽可能遵循 SOLID 原则。不要过度设计! MVC、MVVM、MVP 等模式是架构模式,适用于中大型系统。

【讨论】:

    【解决方案2】:

    没有适合您的正确答案,因为它取决于几个因素,例如应用程序的长度、您在 c# 方面的专业知识,以及另一位用户指出的桌面应用程序类型。话虽如此,我会给你一些建议。

    1. 首先,MVC 是一种面向 Web 的模式,其目的是提高类之间的凝聚力,并对它的每个组件负责。视图确实通过请求与控制器交互,控制器与模型交互,模型与存储库交互,以便基本上为客户端生成响应。所以如果你想要一个桌面应用程序,这是不行的。

    2. MVP 模式几乎相同(不是很了解,但我知道它是 MVC 模式的派生词),但演示者是通过接口与模型交互的人,也许这就是您想要,因为它可以与获胜表格一起使用。

    这些是我对你刚才提到的模式的想法,但我会添加一些我使用的东西。

    我不知道模式的名称,但我通常使用类似于 mvc 的层结构,但它不是我认为的模式(我很乐意知道它是否是它,并请在 cmets 中指出它)。我基本上使用 4 层:表示层、数据层、逻辑层、模型层。职责是,演示文稿是与用户交互的,每当用户发送输入并且它需要与您正在使用的存储库进行交互时,您通过具有您的业务逻辑的逻辑层来完成,然后有数据逻辑,基本上就是你的存储库,它不知道数据是如何呈现的,它只知道它需要对你的存储库进行 CRUD 操作。

    尽管我说过,你说你需要一个简单的应用程序,模式是构建可扩展应用程序的一项伟大工作,但设置它们可能需要一些工作,如果你需要设置它们的工作监督您对应用程序的需求,那么您可能在这里戳错了树。而且你基本上可以拥有 3 或 4 个类,不要试图让你的程序适应模式,它们是为了让我们的工作更容易而不是更难。

    【讨论】:

    • 您对 MVC 和 MVP 的描述不能更错误。 MVC 是一种面向 Web 的模式吗?所以我猜想在 C# 之前不存在任何编程语言,而微软发明了它,对吧?不,完全错误。在回答之前至少熟悉一下自己:en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller。除此之外,您首先要说“没有正确答案”,因此如果没有正确答案,则此问题不适合 Stack Overflow。
    • 有很多编程语言使用 MVC 模式进行 Web 开发,只是没有那么多用于桌面应用程序,事实上我知道没有人使用 mvc 模式进行桌面应用程序,它有多种使用它们的变体,例如 MVVM、MVP 或其他一些模式。谁说c#,我说web编程,你可以使用任何你想要的语言,比如ASP.NET或RoR,或者使用python和flask
    • 你不明白我的评论。该模式是为解决桌面编程问题而诞生的,然后它变成了一个 Web 架构是完全不同的
    • 我确实知道该模式解决了我所说的内聚和职责分离,也许你是对的,起初它不是用于 Web 开发,但我们今天正在谈论开始一个项目,我想要认为我们进化到这一点是可以使用该模式,但在桌面应用程序中使用它是没有意义的。话虽如此,您是对的,但我认为它仅适用于 Web 开发人员是错误的。关于“没有正确答案”的事情。有多种方法可以解决一个问题,您只需找到一个可以利用您拥有的资源采取的解决方案。
    猜你喜欢
    • 2015-07-25
    • 2011-03-31
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    相关资源
    最近更新 更多