基于ASP.NET的MVC模式的分析与应用
2011-06-02浙江商业职业技术学院信息技术分院
浙江商业职业技术学院信息技术分院 徐 枫
引言
近年来,随着Web应用的不断发展,MVC设计模式逐渐成为广大开发者非常感兴趣的设计模型。MVC模式也逐渐在开发者中运用,并有增长趋势。随着网络应用的快速增加,MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论选择哪种语言,无论应用多复杂,MVC模式都能为理解分析应用模型时提供最基本的分析方法,为构造产品提供清晰的设计框架,为软件工程提供规范的依据。
1.MVC模式概述
MVC模式是一种复合设计模式,一种在特定场合用于解决某种实际问题来得出的可以反复实践的解决方案。该模式有三个部分组成:展示层-View;控制层-Control;模型层-Model。首先MVC中的三个部分之间并不存在明显的层次结构,没有明显的向下依赖关系,相反的,View和Model往往是比较独立的,而Control是连接两者的桥梁,更像是横向的切分。MVC结构比较复杂,但是MVC中每个部分都是可以独立测试的,结构更清晰,耦合性更低。三者之间关系如图1所示。
2.MVC模式工作原理
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个核心部件——视图、模型、控制。
图1 MVC架构的关系图
视图(View)是用户可以看到并与之交互的界面。对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。视图就是由HTML元素组成的界面,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash、XHTML、XML/XSL、WML等一些标识语言和Web Services等。MVC有一个突出的优点是能为应用程序处理很多不同的视图,在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是本地储存,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。
控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
由此可见,在一个良好的MVC模式构建的结构中,Control是核心,可以作为一个核心框架来提供,基本上可以简单配置不需要任何代码就可以运行。而View决定了软件展示给用于的界面,使用时的主要工作量在于扩展点以及根据需要而数量不同的视图模板。Model决定了软件提供的功能,其内部可能是一些普通的类或者是实现了某些接口的类,对于复杂的软件可能会分成很多层,如业务逻辑层、业务提供层、系统提供层、数据提供层、数据访问层等。
图2 MvcApplication1系统MVC架构示意图
图3 MvcApplication1系统MVC应用示意图
3.MVC模式应用
如图2所示的系统MvcApplication1采用的是MVC架构的设计模式,该系统中视图层是Views,模型层是Models,控制层是Controllers,下面分别对这个例子做一简单介绍。
Models就是获取的网页需要的数据;Controllers就是获取数据后,将数据绑定到页面控件的这个业务流程;Views就是aspx页面,而且都是不包含后台代码文件的aspx页面。
以Account业务为例,图3很好的概括了MVC的作用。
一个URL请求,ASP.NET MVC引擎会分析这个URL要使用哪个Controller(例如示例中的AccountController),这个Controller从数据库或者其他数据源获取数据,通常这些数据的获取是通过业务的模型类(即MVC中的Model,例如示例中的AccountModels)。Controller将Model对象传递给页面(即MVC中的View,例如示例中Account文件夹下的aspx页面),页面在浏览器中显示出来。
结束语
综合上述,MVC是架构软件非常有效的基本模式,可以将业务处理与显示分离,将系统分为模型、视图以及控制层,使得开发人员会认真考虑系统的额外复杂性,同时把这些想法融入到架构中,增加了系统的可拓展性。这样MVC模式会使得软件系统更加强壮,更加有弹性,更加有个性化。
[1]何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算机工程,2002(06).
[2]周东星,李心科.基于MVC和AJAX的Web开发模型的设计与应用[J].合肥工业大学学报(自然科学版),2008(09).
[3]刘新娥.MVC模式Struts框架构建Web系统的研究与实现[J].电脑开发与应用,2010(09).