MVC设计模式及其在信息系统开发中的应用
作者:周辉 任海军 马亮 王丹宁
来源:《软件导刊》2012年第10
        摘要:MVC设计模式是基于Web应用开发的首选模式,当前许多流行的框架都是基于MVC设计模式的。介绍了MVC设计模式,并对该框架各个层次的组成、功能进行了详细的描述,讲述了基于MVC设计模式的工作原理和工作流程,并用实例来说明如何理解和应用MVC设计模式,帮助开发人员更好地理解和使用MVC
        关键词:MVCWEB;信息系统
        中图分类号:TP319文献标识码:A文章编号:1672-78002012010-0120-03
        基金项目:中国地震局监测预报司2012年度三结合项目(2012
        作者简介:周辉(1981-),男,硕士,中国地震局第二监测中心助理工程师,研究方向为地震网络信息管理及相关系统软件开发。
        0引言
        模型-视图-控制器(MVC)是XeroxPARC20世纪80年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。各种基于MVC设计思路的开发环境也随处可见,例如SUN公司的Jsp+Servlet+JavaBeanEJB),Mircosoft公司的ASP.NETMVCFramework,以及PHP官方框架ZendFramework等。Web应用的快速增加和Web应用复杂度的提高,MVC这一设计模式逐渐被Web系统应用开发所采用,尤其在大型的复杂的信息系统中采用这种模式来进行开发,可以大大减小软件系统开发过程的开发难度,提高开发效率,降低开发风险。
        1MVC概念
        MVC是设计开发Web信息系统的程序架构,是Model-View-Controller缩写,Model即模型,View即视图,Controller即控制器。一个应用都可以把它分成3个部分:ModelViewController,每个部分负责不同的功能,3个部分之间既有区别又有联系,这3个部分结合起来完成信息系统应用。按照软件高内聚、低耦合的设计要求,整个系统又可以划分为若干功能独立的模块,各个模块都可以用ModelViewController来进行刻画,
        2MVC功能
        MVC使Web应用程序的输入、处理和输出分开进行,每个环节都由数据模型、视图和控制器来完成。
        2.1模型的作用
        数据模型通常也叫做模型,它跟Web系统所选择的数据库类型紧密相关,针对每种数据库可以编写一套模型去访问和操作数据库,它是按照一定的规则抽象出来的,数据模型的设计是MVC最重要的核心,对于开发者来说,一切业务都需要建立在数据支持的基础上,所以数据模型不仅仅是针对数据库的操作,而且还要对业务数据的完备性进行检查等。
        2.2视图的作用
        对于用户来说,视图就是用户看到的网页程序页面,用户可以通过页面请求需要的信息,也可以进行输入,来完成和信息系统的交互;对于开发人员来说,视图就是要展示给用户一个窗口,通常接受用户在页面操作中完成和用户的交互,通过页面得到用户的操作和输入,然后通过处理再由页面反馈给用户。
        视图是HTML代码编写用于显示给用户的文件,同一种风格的文件通常被抽象成模板,
一种模板通常完成一类信息的输出。同一种操作可以调用不同的模板来呈现出不同的效果,这也是MVC模式的一个特点,用户既可以用PC访问,也可以通过智能终端访问。同样的一种请求,可能得到不同的页面显示。
        2.3控制器的作用
        控制器主要是用来响应程序页面发送过来的请求,通过传递参数给数据模型,组织用户所关心的数据,然后再把数据通过程序页面返回给用户,完成用户的请求。控制器是视图和数据模型之间的一个桥梁,负责二者之间交互。
        3MVC架构及其工作原理
        3.1MVC架构
        如图1所示为ModelViewController三者之间的结构示意图,其中在Model中定义了访问数据库的各种访问方式,例如查询、删除、修改等,开发人员可以定义针对不同类型数据库的数据模型;在View中定义用户关心的数据显示方式,例如以表格来显示用户关心的数据等,View中还可以定义供给用户与信息系统交互的接口,例如通过表单让用户输入信息,
View提供了灵活的显示方式,可以对不同的终端访问显示不同的页面布局,例如使用手机浏览者看到的页面与使用个人电脑浏览者所看到页面不同,但他们所请求的数据都来自于同一个数据库中,通常情况下View都会定义成一个个的模板文件以供Controller调用;在Controller中定义与业务逻辑相关的各种方法,每种方法都会完成一个特定操作,而这种操作都会与View中的模板文件对应起来,通过用户的请求或者输入来完成业务逻辑。
        3.2工作流程
        用户通过终端(计算机或手持设备),输入URL来访问信息系统,信息系统收到请求后,通过判断终端类型返回默认的页面给用户,用户在看到默认页面后通过相应的输入或者点击来操作信息系统,信息系统通过视图与用户交互,控制器接受视图页面的请求并通过数据模型在数据库中组织相对应的数据,最后通过调用视图中的模板文件返回并显示给用户。用户每次的请求过程如图2所示,这就是采用MVC开发模式的系统工作流程。
        4MVC在流动观测动态监控管理系统开发中的应用
        流动形变监测管理系统是针对全国流动形变观测开发的Web信息系统,主要是对GPS
量,相对重力测量和水准测量作业进行管理和动态监测的准实时系统,是基于MVC开发的Web信息管理系统,使用的是LAMPLinux-Apache-MySQL-PHP)网站架构,该框架包括:操作系统LinuxWeb服务器Apache,编程语言PHP,数据库MySQL,所有组成软件均是开源软件,是国际上成熟、流行的架构框架,很多流行的商业应用都是采取这个架构,LAMP架构的优点是开源、免费,系统可扩展性、灵活性和可靠性都比较好。和其他架构相比,LAMP具有Web资源丰富、轻量、快速开发、跨平台、高性能的优势,因此LAMP是搭建网站的首选平台。
        4.1模型(Model
        系统使用的MySQL数据库,首先要做的是对数据库进行模型化,使信息系统和数据库之间有个中间层,对整个数据库的访问、查询、删除、修改操作等进行模型化,例如在本系统中对MySQL数据操作的模型model.class.php如下:
        对数据库进行模型化简化了对数据库的操作,在数据库IP或用户发生变化时只需修改一处便可正常进行访问,另外,还可以针对不同的数据库抽象成不同的模型,例如,针对Oracle数据库可以建立这样一套访问模型,这样就可以实现在不同数据库之间的切换,而不
必修改其他地方,同时也对于代码的复用提供了基础。
        4.2控制器
        4.3视图
        上面提到了两个视图文件即group_add.tpl.phpgroup_add.list.php,前者是让用户填写表单来完成对小组信息的收集,后者是表单信息填写完成后用户向系统提交成功后返回所有小组的信息。如图3所示。
        每一个小的操作都有一个模板文件(即视图)来显示结果,表现层和控制层是被分离开的,同时还可以针对
        不同的用户或者中端来编写不同的模板文件,从而达到不同的表现效果。
        5结语
        MVC设计模式有效地将数据层、控制层、表现层分离开来,让开发人员更容易理解Web系统的工作方式。模型文件、控制器文件和模板文件分开书写,提高了程序的可读性;
针对不同的数据库编写不同的模型文件,提高了代码的复用性;业务逻辑开发人员只需编写控制器文件,前端开发人员表现层的模板文件,降低了程序开发的风险,在一定程度上也解决了开发人员不足的情况。
        在全国流动观测动态监控管理系统的开发过程中,中国地震局第二监测中心科技信息室开发人员有限,因而分时段对整个系统采用MVC设计模式的思路来布置任务,集中力量先后对数据层、业务层、表现层代码进行了编写,降低了开发难度,提高了开发效率,规避了软件开发过程中风险,目前系统处于试运行阶段,收到了比较好的效果。在开发过程中,如果信息系统想使用MVC设计模式,那就必须从软件的架构方面重新进行设计,这带来了额外的工作量和复杂性,但是MVC会使整个软件在健壮性、代码重用和结构方面登上一个新的台阶。
        参考文献:
        [1]马忠超.零基础学PHP[M].北京:机械工业出版社,2008.
        [2]STEVEBURBECKPHD.HowtouseModel-View-ControllerMVC[OL].http//st-www.cs.illinois.edu/users/smarch/st-docs/mvc.html1992.
        [3]薛峰,梁峰,徐书勋,等.基于SpringMVC框架的Web研究与应用[J].合肥工业大学学报:自然科学版,20123.
        [4]计三有,赵艳芳,仇艳丽,等.基于SpringMVC框架的Web研究与应用[J].物流工程与管理,20122.
        [5]王丹宁.地震科学数据共享网站开发技术研究[J].电脑编程技巧与维护,2009页面设计代码2.
        [6]周辉,马亮,王文青,等.基于.NET的流动GPS观测辅助系统设计与实现[J].电子设计工程,201122.
        (责任编辑:杜能钢)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。