是否有关于MVVM的简单分步参考?
就在这里。看看这里。
MVVM是MVC的超集还是子集?
MVVM属于MVC家族,因此,如果可以说完全是它的一个子集。这是将UI与下面的业务逻辑分离的一种变体。我将其描述为MVC的同级产品。从OOP的早期开始,人们一直在寻找将UI与逻辑分离的方法。MVC是第一个进化的原型。这很简单,尽管大多数人都做错了。该视图只是模型的观察者,并在需要时调用它。控制器只是视图与模型进行通信的一种策略,例如,当您需要可交换行为时(例如,ReadonlyController,AdminController)。MVC非常成功,应用它确实是一个好习惯。
MVVM是一种特殊的MVP模式,如Martin Fowler所述。MVP尝试使视图尽可能地哑(同时仍接受用户输入等),从而增强可测试性。它旨在抽象化视图和要放在演示者中的交互逻辑。演示者仅与模型/业务逻辑进行通信并更新视图。Martin Fowler在其Presentation Model Pattern中非常描述了MVVM。
该视图完全抽象为ViewModel。当View
需要属性时,也ViewModel
需要它。它(ViewModel)旨在完全独立于底层UI技术(一种抽象)。为了在View和ViewModel之间进行通信,需要使用同步模式(即Observer)。这在无状态的Web环境中不容易实现。MVVM与MVP不同,因为View不再绑定到模型/业务逻辑,而是绑定到ViewModel。
对于我的应用程序的Windows和Web版本,哪种模式是现代的,应该选择哪种模式?
表示模型(类似于MVVM)在理论上应完全独立于所使用的UI技术。但是,同步化方面需要涵盖。通过使用WPF绑定到“命令和属性”(已存在同步胶),可以轻松完成此操作。使用ASP.NET,情况就不同了。但是,在CodeProject上有一篇文章,其将Presentation Model Pattern与所有Windows UI技术一起使用。看一看。