比较3层模式和MVVM

时间:2011-02-28 12:02:55

标签: c# wpf mvvm

我不知道MVVM。我总是遵循3层模式,其中一层是UI,另一层是业务层,最后一层是数据访问层。

在此层中,我们将请求从UI发送到业务层,业务层与数据访问层进行交互。在这种模式下,一切顺利然后我的问题为什么要学习MVVM。 MVVM的优点是什么?使用MVVP可以做很少的努力。请详细讨论。感谢。

4 个答案:

答案 0 :(得分:14)

图层

与我之前写的ppl相反 - MVVM模式不是将UI层分成3层,而是将UI层分成另外两层 - View和ViewModel。

所以,如果我们有DAL,BLL和UI,现在我们有模型(DAL& BLL)和ViewModel + View(而不仅仅是一个图层用户界面)。

它仍然是3层但是编排的方式不同(如果你真的想到它 - DAL从来就不是真正的层 - 它最多是一个辅助类,所以前面提到的3层实际上只有2层,现在变成了MVVM中的3层)。

原因

如果你考虑一下,你会发现在3层架构中,通常UI与表示代码和应用程​​序逻辑代码混合在一起。这违反了SRP(单一责任原则)并且由于几个原因而不好。 在MVVM中,UI层分为两层。 ViewModel负责应用程序逻辑,而View则仅负责演示。

这允许你做三件非常重要的事情:

  1. 更好的代码可维护性

  2. 更容易使用VS设计器和Blend。又名 Blendability 。 (这可以说是MVVM最强大的特性。它确实提高了生产力)

  3. 允许使用自动化测试来测试ViewModel,而到目前为止我们必须测试UI本身,并且在UI上进行自动化测试很复杂。这称为 Testability

  4. 在个人笔记上;多年来我一直在写n层架构。我在一年多前开始练习MVVM。在某些时候这可能是一次艰难的旅程,但是男人,真的值得付出努力。

答案 1 :(得分:4)

MVVM用于构建UI层。它是一种模式,可以在业务对象和UI框架之间实现非常好的交互。您不必更改3层模式。 MVVM处于另一个抽象层面 Here你发现了一个介绍MVVM的非常好的视频,并且可能回答了很多问题。

答案 2 :(得分:3)

MVVM本身可以说是一个三层架构。这些层都存在于同一个应用程序中。

“3层”有时也指n-tier architecture,更多的是将UI,服务层和数据层分离到不同的服务器上。如果你有这种分层,那么MVVM将不会取代它。它只会增加UI层,将其拆分为自己的三层。

这是MVVM的一篇文章,它通过MVP和MVVM展示了经典MVC之间的一些关系:

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

另见my answer to this other question。它解释了在MVC上使用MVVM而不是旧版本的一些原因。

答案 3 :(得分:2)

MVVM与WPF,Silverlight / Moonlight和Windows Phone 7特别相关,因为它利用了这些框架中内置的强大数据绑定功能。