我不知道MVVM。我总是遵循3层模式,其中一层是UI,另一层是业务层,最后一层是数据访问层。
在此层中,我们将请求从UI发送到业务层,业务层与数据访问层进行交互。在这种模式下,一切顺利然后我的问题为什么要学习MVVM。 MVVM的优点是什么?使用MVVP可以做很少的努力。请详细讨论。感谢。
答案 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则仅负责演示。
这允许你做三件非常重要的事情:
更好的代码可维护性。
更容易使用VS设计器和Blend。又名 Blendability 。 (这可以说是MVVM最强大的特性。它确实提高了生产力)
允许使用自动化测试来测试ViewModel,而到目前为止我们必须测试UI本身,并且在UI上进行自动化测试很复杂。这称为 Testability
在个人笔记上;多年来我一直在写n层架构。我在一年多前开始练习MVVM。在某些时候这可能是一次艰难的旅程,但是男人,真的值得付出努力。
答案 1 :(得分:4)
MVVM用于构建UI层。它是一种模式,可以在业务对象和UI框架之间实现非常好的交互。您不必更改3层模式。 MVVM处于另一个抽象层面 Here你发现了一个介绍MVVM的非常好的视频,并且可能回答了很多问题。
答案 2 :(得分:3)
“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特别相关,因为它利用了这些框架中内置的强大数据绑定功能。