【问题标题】:If I am concerned about memory usage, should I avoid MVVM?如果我担心内存使用情况,我应该避免使用 MVVM 吗?
【发布时间】:2012-07-18 17:18:39
【问题描述】:

我有一个 WPF 应用程序,该应用程序应该是紧凑的,并且可能占用最少的内存。 GUI从流程来看很简单,页面和网格很少,但从图形、动画等方面来看却相当丰富。

我有使用 Prism 编写应用程序的经验,我非常喜欢它。但对于简单的任务来说,它看起来太重了。它不是 LOB 应用程序,但我仍然需要可测试性、GUI/流/业务分离等。

我还是应该使用 MVVM 吗?

我不确定在尝试最小化应用程序的内存使用时是否应该担心使用 MVVM 设计模式的开销。

【问题讨论】:

  • MvvmLight toolkit 非常轻量级。事实上,这就是我使用这个框架的原因。它执行 MVVM,并且仅执行 MVVM。
  • 另外,看看Caliburn Micro
  • 我进行了一些编辑以删除导致此关闭的额外问题,并已投票重新打开此。

标签: c# .net wpf mvvm prism


【解决方案1】:

是的,如果您使用 WPF,请使用 MVVM

WPF 被设计成有一个 UI 层和一个数据层,这非常适合 MVVM 设计模式。我发现它使编码和维护变得更快、更容易。

您不必使用成熟的 MVVM 框架,甚至根本不必使用任何 MVVM 框架。您可以选择您有兴趣使用的部分(继承INotifyPropertyChangedRelayCommandDelegateCommand 的基础对象、消息传递系统等),然后丢弃所有其余部分。或者你可以建立自己的。

开销很少,绝对不值得避免这种模式,但是一些 MVVM 框架确实包含不需要的功能并且可能会导致一些开销,因此请确保只从中挑选出你想要的部分。

关键是,如果您使用 WPF,请使用 MVVM 设计模式。这将使您的生活,以及从事该项目的任何未来开发人员的生活变得更加轻松:)

【讨论】:

    【解决方案2】:

    我真的会推荐使用 MVVM。

    我们在一个大型项目中使用了该模式并且效果很好,有以下建议:

    • 我们使用非常有用的,顾名思义,轻,MVVM Light Toolkitlib
    • 我们不使用 ViewModelLocator 的东西。当您动态实例化视图时,很难让它工作。代码隐藏中的旧 this.Datacontext = new TheViewModel(); 很好
    • 我们不使用 Messenger 的东西。太复杂了,收益很少。从视图模型触发的一个很好的旧事件在 IMO 中要简单得多。
    • 我们不使用 EventToCommand 东西,这在很多情况下会使 XAML 变得复杂。
    • 当代码完全与视图相关时,我们会在后面编写代码。对于鼠标手势功能(拖放...)或其他特定的 UI 内容,代码隐藏非常适合控制事件处理。

    【讨论】:

      【解决方案3】:

      首先:是的,MVVM 是一种推荐的方式来构建 C#/WPF 应用程序

      第二:你可以使用 MVVM 完全没有框架,那么它就像你构建它一样轻量级。

      在此处查看可能的 MVVM 框架的概述: SO in depth discussion of different MVVM frameworks

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        • 2011-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        相关资源
        最近更新 更多