【发布时间】:2014-11-18 09:42:39
【问题描述】:
谁能解释一下两者的区别
MVC(模型-视图-控制器)
和
MVVM(ModelView-ViewModel)架构
?
【问题讨论】:
-
您检查现有答案了吗? stackoverflow.com/questions/667781/… 5年前问,浏览146738次 你是怎么错过的?
标签: model-view-controller mvvm
谁能解释一下两者的区别
MVC(模型-视图-控制器)
和
MVVM(ModelView-ViewModel)架构
?
【问题讨论】:
标签: model-view-controller mvvm
由于 MVC 和 MVVM 完全面向不同的应用程序范例,即用于 Web 的 ASP.NET MVC 和 MVVM 桌面,它们需要以截然不同的方式运行,最明显的区别是 MVC 中的控制器和来自 MVC 的 ViewModel MVVM
MVC 中的控制器接受 HTTP 请求,从模型中获取数据,并将模型路由到视图以进行输出。在桌面应用程序中,没有路由或 URL;但是桌面应用程序仍然具有导航功能,它是 UI 的一部分,因此需要成为良好 UI 模式的一部分。 ViewModel 是完成此任务的部分,因为 MVVM 中的 ViewModel 除了获取数据和数据绑定之外,还负责执行或公开包含所有 UI 逻辑的命令。
视图的行为必须不同,因为 Web 和桌面应用程序使用非常不同的方式呈现信息以供用户交互。此外,http 上的应用程序被认为是无状态的,而桌面应用程序通过 LAN 具有完全连接性,并且可以轻松包含和传输大量数据。 MVC 中的视图仅显示数据并执行基本的客户端 UI 职责,通常使用 JavaScript(表单提交、验证、效果等)。另一方面,MVVM 中的 View 拥有丰富的数据绑定和验证框架,结合 ViewModel 暴露的业务逻辑和导航,带来非常丰富的用户体验
模型在这两种模式下的行为方式都相同——它们充满了数据(有时还有逻辑)。您可能希望在模型级别使用其他模式来更好地组织、维护和更好地分离关注点。带有实体框架的存储库模式是一种流行的模式,Julie Lerman 在一系列关于它的帖子中都有很好的解释。
在 MVC 和 MVVM 中都存在 ViewModel。尽管名称相同,但两种模式中的 ViewModel 的工作方式存在显着差异。
MVC 中有 ViewModel,但它们的职责与 MVVM ViewModel 不同。
一个 MVC ViewModel 是两个或多个模型组合(粉碎在一起),或者是一个或多个模型的自定义子集,它提供了相应视图所需的所有信息。它基本上是一个混合模型,最好的部分 - 视图不知道区别。
在 MVVM 中,ViewModel 提供与 MVC 中相同的功能,但它也承担了控制器的职责。
MVC 模型和 MVVM 模型
【讨论】:
MVVM 基于 MVC 设计模式。
MVVM 是一种更特定于 UI 开发平台的实现。 GUI开发和后端开发的分离使得这些UI开发平台的开发过程更加容易。
有关差异的更多信息,另一个主题已经存在:Link to another stackoverflow topic
【讨论】: