比较3层模式和MVVM

Tho*_*mas 6 c# wpf mvvm

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

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

Ela*_*atz 15

图层

与我之前写的ppl相反 - MVVM模式不是将UI层分成3层,而是将UI层分成两个附加层 - View和ViewModel.

所以,如果我们有DAL,BLL和UI,现在我们有Model(DAL&BLL)和ViewModel + View(而不仅仅是一个图层UI).

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

原因

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

这可以让你有三个非常重要的事情:

  1. 更好的代码可维护性.

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

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

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

  • 我认为这是思考MVVM的正确方法.实际上MVVM应该只是被称为VVM - 它与视图模型的对话无关.实际上,如果你懒惰并将功能放在视图模型中,就可以编写*没有*模型的简单MVVM应用程序. (4认同)