MVC 概述
MVC 模式可以理解为表现模式( UI/Presentation Patton ),因为它是一种用来展现给用户看的组件模式,同时,也有些人认为 MVC 模式是一种架构模式( Architecture ),因为 MVC 模式本身就划分为了三个部分。
MVC 的三种角色
Model :用于存储数据的组件(与领域模型概念不同)。
View :根据 Model 数据进行内容展示的组件。
Controller :接受并处理用户指令(操作 Model ),选择一个 View 并输出内容。
转载: 谈谈你对MVC 和三层架构的理解?(月薪三万的面试题)
V 是皮肉,是看到的东西
M 是骨骼,是里面真实的东西
C 就是连接皮肉和骨骼的筋
对于界面设计可变性的需求,MVC 把交互系统的组成分解成模型、视图、控制三种部件。
模型部件是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系,他独立于具体的界面表达和I/O 操作。
视图部件把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。
控制部件是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。通常一个视图具有一个控制器。
模 型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这 些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化- 传播机制。
ASP.NET MVC三种角色之间的协作
1. Controller->View : Controller 有一个到 View 的引用,但是 View 却不知道 Controller 的存在,这样就实现了 View 和 Controller 的分离。
2. View->Model 和 Controller->Model : Model 并不知道 View 和 Controller 的存在,这样就分离了 Model 。
从这里我们就更好地理解了 MVC 模式, Model 是业务逻辑的一部分, View 是 Model 内容的体现,而 Controller 是这两者之间的协调者。
ASP.NET MVC 的优势
- 直接 ,Web 开发就是 Web 开发
- 易于对界面逻辑进行单元测试
- 易于后台与前台开发人员的配合
- ASP.NET MVC 是在 ASP.NET 平台下开发 Web 应用应用程序的另一选择,并非为了取代 WebForms 。
ASP.NET MVC 的特点
- 一切都是可替换的
- 一切都是可测试的
- 公开源代码