如果我担心内存使用情况,我应该避免使用MVVM吗?

时间:2012-07-19 13:46:32

标签: c# .net wpf mvvm prism

我有一个WPF应用程序应该是紧凑的,可能的内存占用量最小。从流程,几页和网格的角度来看,GUI很简单,但从图形,动画等角度来看,它非常丰富。

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

我还应该使用MVVM吗?

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

3 个答案:

答案 0 :(得分:6)

是的,如果你正在使用WPF,请使用MVVM

WPF的设计使您拥有UI层和数据层,这非常适合MVVM设计模式。我发现它使编码和维护更快更容易。

您根本不必使用完整的MVVM框架,甚至根本不需要使用任何MVVM框架。您可以选择您感兴趣的部分(继承INotifyPropertyChangedRelayCommandDelegateCommand的基础对象,消息系统等)并删除所有其他部分。或者你可以建立自己的。

开销量是最小的,绝对不值得避免使用模式,但是一些MVVM框架确实包含不需要的功能并且可能导致一些开销,所以请确保只选择你想要的部分。

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

答案 1 :(得分:4)

我真的建议使用MVVM。

我们在一个庞大的项目中使用了这个模式并且效果很好,并提出了以下建议:

  • 我们使用非常有用的,正如名称所示,light,MVVM Light Toolkit lib
  • 我们不使用ViewModelLocator的东西。动态实例化视图时太难以使其工作。代码隐藏中的好this.Datacontext = new TheViewModel();很好
  • 我们不使用Messenger的东西。太复杂,收益甚微。从视图模型中发出的一个很好的旧事件是更简单的IMO。
  • 我们不使用EventToCommand的东西,这在很多情况下都没有使XAML复杂化。
  • 当代码与视图完全相关时,我们会编写代码。对于鼠标手势功能(拖放...)或其他特定的UI事物,代码隐藏适用于控制事件处理。

答案 2 :(得分:2)

首先:是的,MVVM是如何构建C#/ WPF应用程序的推荐方法

第二:你可以在没有框架的情况下使用MVVM,然后它就像你构建它一样轻量级。

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