MVC 与 MVVM – 它们之间的区别

MVC 和 MVVM 之间的主要区别

  • MVC 框架是一种架构模式,它将应用程序分为三个主要逻辑组件:模型、视图和控制器。另一方面,MVVM 借助标记语言或 GUI 代码促进了图形用户界面开发的分离
  • 在 MVC 中,控制器是应用程序的入口点,而在 MVVM 中,视图是应用程序的入口点。
  • MVC模型组件可以独立于用户进行测试,而MVVM易于进行单独的单元测试,并且代码是事件驱动的。
  • MVC 架构在 Controller 和 View 之间建立了“一对多”的关系,而 MVVM 架构在 View 和 ViewModel 之间定义了“一对多”的关系。

MVVM 和 MVC 之间的区别

什么是MVC?

这款 MVC框架 是一种架构模式,它将应用程序分为三个主要逻辑组件:模型、视图和控制器。因此缩写为 MVC。MVC 的全称是“模型视图控制器”。

在此架构中,构建一个组件来处理应用程序的特定开发方面。MVC 将业务逻辑和表示层彼此分离。此架构模式主要用于桌面图形用户界面 (GUI)。

什么是 MVVM?

MVVM 架构有助于借助标记语言或 GUI 代码分离图形用户界面的开发。MVVM 的全称是 Model–View–ViewModel。

MVVM 的视图模型是一个值转换器,这意味着视图模型负责以易于管理和呈现对象的方式公开来自模型的数据对象。

MVC模式


MVC Archi质地
MVC Archi质地

三个重要的 MVC 组件是:

  • 型号: 它包括所有数据及其相关逻辑。
  • 视图: 向用户呈现数据或处理用户交互。
  • 控制器: 模型和视图组件之间的接口。

让我们详细了解一下每个组件:

型号

模型组件存储数据和相关逻辑。它表示在控制器组件或任何其他相关业务逻辑之间传输的数据。

例如,Controller 对象可帮助您从数据库中检索客户信息。它处理数据并将其发送回数据库或使用它来呈现相同的数据。

首页

视图是应用程序中表示数据呈现的部分。视图由从模型数据中收集的数据创建。视图请求模型提供信息,以便将输出重新发送给用户。

视图还表示来自图表、图解和表格的数据。例如,任何客户视图都将包含所有 UI 组件,如文本框、下拉菜单等。

控制器

控制器是应用程序中处理用户交互的部分。控制器解释用户的鼠标和键盘输入,并通知模型和视图进行相应的更改。

控制器向模型发送命令以更新其状态(例如,保存特定文档)。控制器还向其关联视图发送命令以更改视图的呈现方式(例如,滚动特定文档)。

MVVM模式

以下是 MVVM 的模式:

MVVM Archi质地
MVVM Archi质地

MVVM 架构提供视图和视图模型之间的双向数据绑定。它还可以帮助您自动将视图模型中的修改传播到视图。视图模型利用观察者模式在视图模型中进行更改。

让我们详细了解一下这个组件:

型号

模型存储数据和相关逻辑。它表示在控制器组件或任何其他相关业务逻辑之间传输的数据。

例如,Controller 对象将从学校数据库中检索学生信息。它处理数据并将其发送回数据库或使用它来呈现相同的数据。

首页

View 代表 HTML、CSS、jQuery 等 UI 组件。

模式视图负责显示从控制器收到的结果数据。此视图还将模型转换为用户界面 (UI)。

查看模型

视图模型负责呈现函数、命令、方法,以支持视图的状态。它还负责操作模型并激活视图中的事件。

MVC 和 MVVM 之间的区别 Archi质地

以下是 MVVM 和 MVC 之间的重要区别

MVC(模型视图控制器) MVVM(模型视图视图模型)
控制器是应用程序的入口点。 视图是应用程序的入口点。
控制器和视图之间的一对多关系。 视图与视图模型之间的一对多关系。
视图没有引用控制器 视图有对视图模型的引用。
MVC 是旧模型 MVVM 是一个相对较新的模型。
难以阅读、更改、单元测试和重用此模型 当我们有复杂的数据绑定时,调试过程将会变得复杂。
MVC模型组件可以与用户分开测试 易于进行单独的单元测试并且代码是事件驱动的。

MVC的特点

以下是 MVC 的重要特性:

  • 简单、无摩擦的可测试性。高度可测试、可扩展和可插拔的框架
  • 它还可以利用 ASP.NET、Django、JSP 等提供的现有功能。
  • 它提供对您的 HTML 以及 URL 的完全控制。
  • 它支持测试驱动开发 (TDD)
  • 这种架构提供了逻辑分离
  • 允许路由 SEO 友好 URL。
  • 提供可理解且可搜索的 URL 映射。

MVVM 的特点

以下是 MVVM 架构的特点:

  • MVVM 是为具有数据绑定功能的桌面应用程序编写的 – XAML 和 INotifyPropertyChanged 接口
  • 如果您想在 View-Model 中进行修改,View-Model 将使用观察者模式。
  • MVVM 模式主要用在 WPF中、Silverlight、nRoute 等

MVC的优点

以下是 MVC 的优点/优点

  • 更轻松地支持新类型的客户
  • 各个组件的开发可以并行进行。
  • 通过将应用程序划分为单独的(MVC)单元来避免复杂性
  • 它仅使用前端控制器模式,该模式使用单个控制器处理 Web 应用程序请求。
  • 为测试驱动开发提供最佳支持
  • 它适用于由大量网页设计师和开发者团队支持的 Web 应用程序。
  • 它提供了清晰的关注点分离(SoC)。
  • 所有类和对象都是相互独立的,因此您可以单独测试它们。
  • MVC 允许将控制器上的相关操作逻辑分组在一起。

MVVM 的优点

以下是 MVVM 的优点/好处

  • 业务逻辑与 UI 解耦
  • 易于维护和测试
  • 易于重用组件
  • 松散耦合的架构:MVVM 使您的应用程序架构变得松散耦合。
  • 您可以为视图模型和模型层编写单元测试用例,而无需引用视图。

MVC 的缺点

以下是 MVC 的缺点

  • 业务逻辑与 UI 混合
  • 难以重用和实施测试
  • 没有正式的验证支持
  • 数据的复杂性增加和效率低下
  • 将 MVC 与现代用户界面结合使用的困难
  • 需要多个程序员进行并行编程。
  • 需要多种技术的知识。

MVVM 的缺点

以下是 MVVM 的缺点

  • 控制器中大量代码的维护
  • 有些人认为,对于简单的 UI 来说,MVVM 架构可能有些过度。
  • 视图和视图模型之间不紧密耦合