Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller NETMVC和MVVM_Model View Controller_Mvvm - Fatal编程技术网

Model view controller NETMVC和MVVM

Model view controller NETMVC和MVVM,model-view-controller,mvvm,Model View Controller,Mvvm,MVVM是在ASP.NETMVC之前存在的一种Microsoft设计模式。任何人都可以通过MVVM和新的MVC模式之间的差异来了解吗 我冒昧地建议,MVVM是微软的设计模式,而ASP.NET MVC是微软的一个具体实现(它不一定遵循MVC或MVVM,但类似)。正如里德所说,MVC从70年代就已经存在了。MVC和MVVM都是体系结构模式。MVC起源于Smalltalk。ASP.NET MVC是Microsoft使用ASP.NET框架实现的MVC模式 这两种模式都处理关注点的分离。MVC更多地涉及应

MVVM是在ASP.NETMVC之前存在的一种Microsoft设计模式。任何人都可以通过MVVM和新的MVC模式之间的差异来了解吗

我冒昧地建议,MVVM是微软的设计模式,而ASP.NET MVC是微软的一个具体实现(它不一定遵循MVC或MVVM,但类似)。正如里德所说,MVC从70年代就已经存在了。

MVC和MVVM都是体系结构模式。MVC起源于Smalltalk。ASP.NET MVC是Microsoft使用ASP.NET框架实现的MVC模式

这两种模式都处理关注点的分离。MVC更多地涉及应用程序中各种常用层的交互,如模型(数据层)、视图(表示层)和控制器(业务逻辑层)

凭借WPF和Silverlight的高级数据绑定功能,MVVM更适合并被宣传为下一件大事。Martin Fowler在他的《企业应用程序体系结构》一书中将这些模式概括为表示模式

我认为使用ViewModel的一个优点是,它允许您使用单元测试更好地测试应用程序代码。由于这个原因,我发现MVVM或至少它的ViewModel部分在ASP.NET MVC应用程序中也经常使用

有人能解释一下MVVM和新的MVC模式之间的区别吗

是:使用ASP.NET MVC时,MVC模式使用控制器将模型直接渲染到视图中。对于具有少量对象的平凡项目,这是完全可以接受的。这可能成为一个问题的地方是UI层的关注点可能会渗透到底层(域)模型

当使用MVVM时,您将在模型和视图之间添加一个抽象,这当然是ViewModel。这允许作者将视图最容易使用的对象投影到视图中。ViewModel可以包含在(域)模型中不合适的内容。与此相关的成本是,您需要具有将数据从模型转换到视图模型的映射逻辑。像AutoMapper这样的工具可以帮助完成这项工作


一个简单的例子可能是模型不需要特定的字段,但需要特定的视图。如果将此逻辑附加到ViewModel,则其他UI可以使用相同的VM,而不必复制烘焙到第一个用户界面中的逻辑,而不是将其烘焙到用户界面中

MVC和MVVM实际上是完全不同的。当谈到ASP MVC时,似乎有一些对MVVM的误解。在MVC中创建“视图模型”的实践,这是提供视图的特定类,而良好的实践并不符合MVVM的精神,实际上只是MVC的一个更干净的版本


MVVM更适合于使用WPF或类似工具的桌面,或者纯粹使用JavaScript框架(如knockout.js)的浏览器。该模式与MVC完全不同,涉及到视图被“订阅”到模型。

MVC(在最新的ASP.NET MVC实现之外可用)比MVVM早很久。。。请参阅:编辑以明确表示它是Microsoft ASP.Net MVC。我知道MVC早于MVVM,但ASP.NETMVC是MVVM的继承者,尽管MVVM本身就是基于MVC的。是的,ASP.NETMVC中也存在ViewModel。难道我们不能在MVC中集成Silverlight与表示层相同的高级功能吗?。我只是想知道,在web应用程序开发中,一个比另一个重要。