【问题标题】:Should I reference MVVM framework in the Model layer?我应该在模型层引用 MVVM 框架吗?
【发布时间】:2015-12-08 12:04:04
【问题描述】:

我花了很长时间避免模型层被“WPF 东西”污染。当然,XAML 从一开始就被禁止使用除了 View 之外的任何东西,但是当涉及到 ViewModels 和 Models 时我有点困惑。

正如我现在所看到的,如果你有一个层架构模式,那么每一层都由这个架构跨越。所以,正如 MVVM 的名字所暗示的那样,你可以在 Model, layer 中引用它,对吧?

我开始弄清楚的其他事情:MVVM 似乎独立于 WPF,对吧?我的意思是,它们可以很好地协同工作,据我所知,您可以在模型层中使用 MVVM 框架而无需引用任何 WPF 程序集。

所以问题是:

在模型层引用 MVVM 框架是否被认为是好的或有异味,为什么?

(仅作为记录,我使用的是 MVVM Light)

【问题讨论】:

  • MVVM 是 (View Model) 对吗?然后 View 完全独立,在模型级别上,我们可以使用 VM 中的某些内容。是的,MVVM 独立于 WPF,你可以使用它和 WinForms,但 WinForms 并没有真正准备好 ^_^
  • 我知道 MVVM 是什么,但你所说的“MVVM 框架”到底是什么意思?
  • @GlenThomas 是一些库,其中包含用于实现该模式的有用类。示例:Caliburn.Micro、MVVM-Light、PRISM。
  • 由于“模型层”是一个虚构的区别,您可以决定从中引用您的视图模型是否有问题。你决定!

标签: wpf mvvm architecture


【解决方案1】:

在纯 MVVV 中,MVM 的数据源,但它不知道它,类似地,视图是 VM 的表示VM 不知道 V。牢记这种关系,人们会质疑是否需要从模型中引用 MVVM 框架,当涉及到与模型的交互时,您不需要命令或信使或扩展的可视化定制,您只需使用它。

如果您查看 MVVM framework comparison sheet,您会发现这些功能都不包括模型交互。

VM消耗MV消耗VM

MVVM 是一种模式,而 WPF、Silverlight 或 Winforms 是应用程序框架。

【讨论】:

    【解决方案2】:

    您不应该真正引用您的 MVVM 框架,因为它们是基础架构的一部分。虽然许多当前框架在多个平台(Silverlight、WPF、UWP、WinPhone)上工作,但它们通常仍绑定到某种技术或框架(即上次我观看 Prism 5.0 区域支持仅限于 WPF 不支持 WinPhone /UWP)。

    您的“模型”层将包含您的业务逻辑(也称为域模型/层),并且应该独立于基础架构问题(UI 框架、数据库实现、MVC 或服务器技术)。

    如果您必须更改 MVVM 框架,您不仅需要更新您的 ViewModel,还需要更新您的模型/域层。这很糟糕,因为当您更改基础架构技术时,您不应该更新您的域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 2013-04-27
      • 1970-01-01
      • 2010-11-27
      • 2011-02-12
      • 1970-01-01
      相关资源
      最近更新 更多