标准的“模型视图控制器”模式和微软的模型/视图/视图模型模式之间有区别吗?


当前回答

mvmc,或者MVC+,对于企业和快速应用程序开发来说似乎是一种可行的方法。虽然将UI与业务和交互逻辑分开很好,但“纯”MVVM模式和大多数可用示例在单一视图上工作得最好。

对您的设计不太确定,但我的大多数应用程序都包含页面和几个(可重用的)视图,因此ViewModels确实需要在某种程度上进行交互。使用页面作为控制器将完全违背MVVM的目的,因此不为底层逻辑使用“VM-C”方法可能会导致..嗯. .随着应用程序的成熟,具有挑战性的构造。即使在VB-6中,我们中的大多数人也可能停止了对Button事件进行业务逻辑编码,并开始将命令“中继”到控制器,对吗?我最近研究了许多关于这个主题的新兴框架;我最喜欢的显然是Magellan(在codeplex)方法。编码快乐!

http://en.wikipedia.org/wiki/Model_View_ViewModel#References

其他回答

MVVM将视图模型添加到混合中。这很重要,因为它允许您大量使用WPF的绑定方法,而无需将所有特定于UI的部分放在常规模型中。

我可能是错的,但是我不确定MVVM真的强迫控制器混合。我发现这个概念更符合:http://martinfowler.com/eaaDev/PresentationModel.html。我认为人们选择将其与MVC结合起来,而不是将其内置到模式中。

MVVM是表示模型模式的改进(有争议)。我说有争议,因为唯一的区别是WPF如何提供数据绑定和命令处理的能力。

视图模型是用户界面元素的“抽象”模型。它必须允许您以非可视的方式(例如测试)在视图中执行命令和操作。

如果你使用过MVC,你可能有时会发现创建模型对象来反映视图的状态很有用,例如,显示和隐藏一些编辑对话框等。在这种情况下,您使用的是视图模型。

MVVM模式只是将该实践推广到所有UI元素。

而且这不是微软的模式,WPF / Silverlight数据绑定特别适合使用这种模式。但是没有什么能阻止您使用它与java服务器面,例如。

一般来说,MVC用于Web开发,MVVM在WPF/Silverlight开发中最受欢迎。 然而,有时web架构可能混合使用MVC和MVVM。

例如:你可能会使用knockout.js,在这种情况下,你的客户端上会有MVVM。 你的MVC的服务器端也可以改变。在复杂的应用程序中,没有人使用纯模型。使用ViewModel作为MVC的“模型”可能有一定的意义,而你真正的模型基本上将是这个VM的一部分。这为您提供了一个额外的抽象层。

在web开发中,MVC是服务器端,MVVM是客户端(浏览器)。

大多数情况下,浏览器中的MVVM使用javascript。mvc有很多服务器端技术。