background image

ASP.NET 3.5 MVC 框架详解

    MVC(模型—视图—控制器)结构模式把一个应用程序拆分成三个主要组件:模型、视
图和控制器。在创建基于

MVC 框架的 Web 应用程序时,你可以把[url=]ASP[/url].NET MVC

框架作为

ASP.NET Web 表单模式方案的一种重要候选。较之于基于 Web 表单的应用程序,

ASP.NET MVC 框架是一个轻量级的、测试性强的描述框架,它能够与现有 ASP.NET 特征
(例如母版页面和基于成员身份的认证)紧密集成。

MVC 框架定义于 System.Web.Mvc 命名

空间中。

3 ^* B" X; m+ y! p  E

长时间以来,

MVC 是一种为众多开发人员所熟悉的标准设计模式。一些类型的 Web 应用程

序受益于

MVC 框架,而另一些将继续使用基于 Web 表单与回寄技术的传统型 ASP.NET 应

用程序模式,还有一些类型的

Web 应用程序则有可能把这两种模式结合到一起使用。总之,

MVC 框架方案与 Web 表单方案并非相互排斥的。
总体来看,

MVC 框架包括下列组件:" g. |( G1 O! m7 ~# @! O

(一)模型。模型对象是实现应用程序数据域逻辑的部分。经常情况下,模型对象还负责从
[url=]数据库[/url]中检索和存储模型状态。例如,一个产品对象有可能从一个数据库中检索
信息,操作其中的数据,然后把更新信息写回

[url=]SQL[/url] [url=]Server[/url]数据库中的某

一个产品表格内。

5 T4 k; a  N7 Q. G; r5 M9 B9 K

【提示】在小型应用程序中,模型经常是一个概念上的分离而不是一个物理概念。例如,如果

应用程序仅读取一个数据集并且要把它发送到视图中,那么应用程序就不必专门创建一个
物理模型层和相关联的类。在这种情况下,数据就直接承担了一个模型对象的角色。
(二)视图。视图是负责显示应用程序的用户接口

(UI)的组件。典型情况下,这个 UI 是基于

模型数据创建的。一个典型的示例就是一个产品表格的编辑视图。在此视图中,可以基于一
个产品对象的当前状态显示文本框、下拉列表框和复选框等控件。
(三)控制器。控制器组件的作用是负责处理用户交互,操作模型,并且最终选择一个要显

UI 的视图并生成之。在一个 MVC 应用程序中,视图仅仅负责显示信息,而由控制器负

责处理和响应用户输入与交互。例如,由控制器来处理查询字符串值,并且把这些值传递到
模型,然后在模型中使用该值进行数据库查询。

; T3 o0 Z. Z% ]

MVC 模式在帮助你把应用程序的不同方面(输入逻辑,业务逻辑和 UI 逻辑)分离开来的同
时,提供了这些元素之间的松耦合。

MVC 模式要求每一种不同的逻辑应该存在于应用程序

中的特定位置。例如,

UI 逻辑隶属于视图,而输入逻辑隶属于控制器,业务逻辑则隶属于

模型。这种分离有助于你在构建一个应用程序

[url=]管理[/url]复杂性,因为它能够使你在某

一时刻仅专注于实现的一个方面。例如,你可以专注于视图而不去关心业务逻辑。
除了管理复杂性外,较于测试一个传统型

ASP.NET Web 应用程序,基于 MVC 模式进行开

发使得测试应用程序更加容易。例如,在一个传统型

ASP.NET Web 应用程序中,单个的类

既用于显示输出也用于响应用户输入。因此,为传统型

ASP.NET 应用程序编写自动化测试

可能非常复杂,因为为了测试单个页面,你必须实例化页面类,它所有的子控件以及应用
程序中的其他依赖类。总之,你需要实例化大量的类才能够运行该页面,所以这种情况下要
比针对应用程序的单个部件编写测试困难得多。于是,针对传统型

ASP.NET 应用程序的测