|
1
13
是:使用ASP.NET MVC时,MVC模式使用控制器将模型直接呈现到视图中。对于具有少量对象的小型项目来说,这是完全可以接受的。这可能成为一个问题的地方是,UI层的关注点可以渗透到底层(域)模型中。 当使用MVVM时,您将在模型和视图之间添加一个抽象,这当然是视图模型。这允许作者将视图最容易使用的对象投影到视图中。ViewModel可以包含(域)模型中不适当的内容。这里的相关成本是您需要具有将数据从模型转换到视图模型的映射逻辑。像automapper这样的工具可以帮助完成这项工作。 一个简单的例子可能是模型不需要特定的字段,但是特定的视图需要。而不是将此逻辑烘焙到用户界面中,如果它附加到ViewModel,那么其他UI可以使用相同的VM,而不必复制烘焙到第一个用户界面中的逻辑。 |
|
2
4
MVC和MVVM实际上是完全不同的。在与ASP MVC讨论MVVM时,似乎有一些误解。在MVC中创建“视图模型”的实践是为了提供视图的特定类,而良好的实践并不符合MVVM的精神,实际上只是MVC的一个更清晰的版本。 MVVM更适用于使用WPF或类似工具的桌面,或者仅适用于使用诸如knockout.js等JavaScript框架的浏览器。该模式与MVC非常不同,涉及到“订阅”模型的视图。 |
|
|
3
2
我冒昧地建议说,MVVM是微软的设计模式,而最新推出的ASP.NET MVC是微软的具体实现(它不一定符合MVC或MVVM,但类似)。正如里德所建议的,MVC从70年代就已经出现了。 |
|
|
4
1
MVC和MVVM都是体系结构模式。MVC的起源可以追溯到Smalltalk。ASP.NET MVC是Microsoft使用ASP.NET框架实现的MVC模式。 这两种模式都处理关注点的分离。MVC更多地与应用程序中各种常用层的交互有关,如模型(数据层)、视图(表示层)和控制器(业务逻辑层)。 凭借WPF和Silverlight的高级数据绑定功能,MVVM更适合并作为下一个重要的东西被公开。MartinFowler在他的企业应用程序体系结构书中将这些模式概括为表示模式。 我在使用ViewModel中看到的一个优点是,它允许您更好地使用单元测试来测试应用程序代码。由于这个原因,我发现MVVM或者至少它的viewModel位在ASP.NET MVC应用程序中也经常使用。 |