这一章,我们将首先介绍经典的 MVC体系结构,通过对比 MVC和 Web MVC的区别,来深入理解 Web MVC的由来和特点。

1 MVC 体系结构

首先,我们介绍一下 MVC的体系结构。 MVC是软件工程中的一种软件架构模式。它把软件系统分为三个基本部分:模型,视图和控制器。如图表 2 ‑1 。

MVC架构 类图 实例 mvc体系结构图_Web


MVC体系结构实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外此模式通过对复杂度的简化使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。

1.1 控制器

(1)定义应用程序行为和流程
(2)映射用户动作到模型改变
(3)选择用于响应的视图
控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。响应包括更新数据模型和选择视图解释数据模型。

1.2 视图

(1)解释模型
(2)请求模型更新
(3)发送用户动作到控制器
视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型( Model),因此应该事先在被它监视的数据那里注册。

1.3 模型

(1)封装应用程序状态
(2)提供应用程序功能
(3)响应状态查询
(4)通知视图改变
模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。
上面我们介绍了 MVC体系结构的组件以及组件的职责,我们得知, MVC的各个组件是协同工作,而又互相独立,这样最大程度上实现了组件的重用和高可扩展性。 MVC主要是应用在传统的 C/S体系架构中。

2. Web MVC 体系结构

随着 B/S体系结构的应用程序的流行和快速发展, MVC体系结构思想被应用到 Web应用程序设计。 Web应用程序是基于 HTTP协议的,而 HTTP协议的最大特点就是无连接的。对于一个 Web客户端程序,每次和服务器的通信都是通过一次完整的 HTTP请求和响应来完成的。我们无法实现 C/S应用程序中实现的在视图层注册监听器来监听模型层改变的通知。取而代之的是视图每次需要主动的查询用户数据改变。如图表 2 ‑3 。

MVC架构 类图 实例 mvc体系结构图_体系结构_02


我们能看出,唯一不同的就是模型层不再通知视图层是否存在着状态改变。而是要求视图层主动的去通过控制器查询模型层的改变。如果模型状态改变,控制器则选择一个新的视图解释模型的改变。通过 MVC在 Web应用程序的应用,使 Web应用程序同样可以有层的概念并且有较好的体系结构,易于维护和容易扩展。

3. 本章小结

这一章,介绍 MVC的体系结构和工作原理,通过对比 MVC和 Web MVC来深入理解 Web MVC的由来和特点。
下一章,我们将从整体架构上分析 Spring是如何实现 Web MVC体系结构的。