2011-02-26 104 views
3

当涉及到MVC模式时,我一直认为控制器是关键。也就是说,它是接收用户希望执行的所有动作的人,然后决定使用哪个模型和视图来完成用户请求的动作。 (我对MVC的体验是通过Asp.net,因此我正在考虑如何使用路线来选择正确的控制器,然后加载模型并选择并创建适当的视图。MVVM模式的关键点是什么?

MVVM模式中有一个支点吗?视图是关键点,用户与枢纽交互,然后可以导致使用适当的VM加载并呈现给用户的不同模型?

此外,通常坐在MVC中的控制器中的逻辑位于MVVM模式中的位置?

回答

4

MVVM比MVC更分布。视图和视图模型通常在设计时绑定,这意味着虚拟机不会执行与MVC控制器相同的功能。它更像是一个纯粹的协调者而不是控制者 - 一个好的观点模型通常具有相对较少的决策逻辑。

MVVM背后的整个想法是将视图的图形元素与其编程元素隔离开来。它与MVC的相似之处确实只是肤浅的。在MVC中,控制器充当执行者,是应用程序背后的真正智能。在MVVM中,虚拟机仅充当视图的程序化抽象,而智能则分布在整个应用程序中。

MVVM组件以协作式分布式方式运行,这往往会消除渗透某些MVC应用程序的单一集中。它需要一些习惯,但它工作得很好。将MVVM应用视为机械瑞士手表 - 手表的支点是什么?真的没有一个。手表是一起工作来执行任务的自主组件的集合。真的没有一个'枢轴点'比策划操作。

+0

David我喜欢你的答案。但是当用户点击某个视图上的某个按钮时,决定下一步必须完成什么的逻辑在哪里(加载另一个视图,将数据保留在当前视图中还是两者都有)。这个逻辑是视图还是视图模型的一部分? – 2011-02-27 04:44:42

+0

视图模型通常充当协调员。它将决定谁实现按钮点击所做的请求。但它通常不会自己采取这种行动 - 通常将其委派给Command或Service对象。这使视图模型保持整洁,并专注于指导流量的责任。 – 2011-03-11 22:57:39

2

我不认为在MVVM中有一个等价的支点。不过,我认为这个观点可以选择虚拟机。出于测试目的,您可以在没有视图的情况下使用虚拟机。控制逻辑位于ViewModel中。

我喜欢把MVVM的为M < - > VM <> - V

虚拟机的一个很好的说明是谁福勒调用它Presentation Model

0

我觉得在MVVM中它会是视图。该视图响应用户操作,然后决定如何响应。它会根据用户操作调用VM上的一个方法。虚拟机然后执行该操作。

我想你可以进一步将MVVM分成两种风格;一个模型比较丰富,另一个模型比较贫乏。关于Csla框架的This link有一些关于“富”模型提供的与贫血有关的讨论。

0

在MVVM中,您的视图只是显示您的数据。就像MVC中的视图一样。这样就可以让你的模型完成所有的工作。

如果你把一个按钮放在一个asp.net页面上,你按下它,就像在silverlight页面上放一个按钮一样。使用MVVM时该视图的模型将处理它自己需要执行的操作数据的所有操作。该视图将相应地响应(通过绑定)。在MVC中,控制器将决定对模型进行什么操作。

因此,MVC“View Model”中的M &被合并为MV“View Model”中的一个M.