MVC / MVP / MVVM到底是什么?

我最近在一个.Net WPF项目上工作,build立了一个零售销售点系统,我首次使用了MVP模式。 我花了一点时间把我的头围绕着方法的变化,但是一旦我做到了,我就认为这个概念震撼了!

我的问题是:MVC,MVP和MVVM有什么区别? 如果有一个明确的区别,是否有指导方针,以什么时候应该使用一种模式而不是另一种模式?

如果任何人都可以提供这方面的指导,或指出解释差异的文章,我会非常感激。

微软的“应用程序体系结构指南”描述了MVC和MVP,并探讨了两者的区别。

http://www.codeplex.com/AppArch

这篇MSDN文章介绍了MVVM及其演变。

http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

通过查看特定框架中实现的特定模式,可能很难挖掘模式之间的差异。 这个msdn文章WPF MVVM引用了Martin Fowlers的原创文章,将模式解释为一般方法:

早在2004年,Martin Fowler发表了一篇关于名为Presentation Model(PM)的模式的文章,认为MVVM是针对WPF和Silverlight平台量身打造的更为一般的PM模式的专业化版本。

因此,要了解不同的模式,可以参考Martin Fowler对不同方法的描述。 他的被动视图模式是MVP方法。 他的监督控制器模式是MVC方法。 他的演示模型模式是MVVM方法。 这篇较老的文章讲述了这种模式的发展。

这也可能有助于查看不同语言的实现。 本文使用ZK Java AJAX框架实现事件驱动的GUI模式,将上述三种Martin Fowler模式与现代Java框架进行了对比。 尽pipe它与WPF有不同的语言和框架,但可能有助于看到模式,而不是使用不同的语言来完成模式的实现。