教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 高等教育> 其它> MVC设计模式THE-MVC-WEB-DESIGN-PATTERN大学毕业论文外文文献翻译及原文

MVC设计模式THE-MVC-WEB-DESIGN-PATTERN大学毕业论文外文文献翻译及原文

  毕 业 设 计(论文)

  外 文 文 献 翻 译

  文献、资料中文题目:MVC设计模式

  文献、资料英文题目:THE MVC-WEB DESIGN PATTERN 文献、资料来源:

  文献、资料发表(出版)日期:

  院 (部):

  专 业:

  班 级:

  姓 名:

  学 号:

  指导教师:

  翻译日期: 2017.02.14

  MVC设计模式

  Ralph F. Grove

  计算机科学,詹姆斯麦迪逊大学,哈里森堡,美国弗吉尼亚州

  groverf@jmu.edu

  Eray Ozkan

  计算机科学,詹姆斯麦迪逊大学,哈里森堡,美国弗吉尼亚州

  ozkanex@

  关键字:web,web框架,设计模式,模型-视图-控制器模式

  摘要:模型-视图-控制器模式被引用为许多web开发框架的基础架构。然而,用于web开发的MVC版本随着原来的Smalltalk的MVC的演变而发生了一些改变。本文介绍了对这些变化的分析,并提出了一种独立的Web-MVC模式,用于更准确的描述MVC是如何在web框架中实现的。

  1.介绍

  模型-视图-控制器(Modle-View-Controller,MVC)设计模式被一些web应用框架作为基础架构,例如http://www.wendangwang.com,Rails,以及Struts。MVC最初是在施乐帕克研究中心(Goldberg和Robson,1985)开发的Smalltalk编程环境中实现的。为了适应web框架,MVC已经演变成了另一种方式,最终成为一种不同于其他任何设计模式,也与原始的Smaltalk完全不同的模式的实现。

  本文的第一个目标是介绍MVC设计模式,其中包括它的原始形态(第2节)以及现代众所周知的用于web应用框架的变更后的形态(第3节)。第二个目标是对这个模式演变后发生的变化进行评估,同时呈现演变后版本的有效性(第3节)。最后,我们提出了一个标准的MVC-Web设计模式的描述,用于反映目前在web框架中模式的使用,同时又能保持原始的MVC中令人满意的特性。

  基于MVC的web应用框架的修订版本已经被提出了(Chun, Yanhua, 和Hanhong, 2003) (Barrett和Delaney, 2004)。但是,本文并没有提出新的MVC架构,而是分析和记录了MVC模式从Smalltalk到适应web框架的演变。

  2.SMALLTALK中的MVC

  MVC设计模式是随着Smalltalk的编程环境而引入的,从此我们可以以模块化的方式来构建交互

  式应用程序(Krasner和Pope, 1988)。正如这个名称所暗示的一样,MVC设计模式的功能可以分解为三大部分。

  模型(model)组件封装了应用程序的特定域的结构和功能,其本质就是包括了应用程序的状态以及改变这种状态的操作。模型还保持着对视图和控制器组件的依赖,当应用程序的状态发生变化时它会有通知。这种行为是观察者模式下的一个实例(Gamma, Helm, Johnson和Vlissides, 1995)。视图(view)组件通过图形用户界面将信息呈现给用户。应用程序中不同的操作会有多个视图,不同的视图呈现给多个用户。视图也有可能是分层的,它由一些更小的(子视图)元素构成。当视图中包含的信息被更新时(通过对信息做出响应的模型组件)视图会得到模型的通知,然后视图会查询模型以获得它所要呈现的信息。控制器(controller)组件通过用户界面响应用户的操作,它负责将事件传递给模型然后执行操作。控制器与视图是一一对应的存在的,多层次的视图也因此在相应的控制器之间复制。当控制器接受到输入信号时,它首先将其传送到活动的子控制器,因此输入信号首先会被最低层级的控制器处理。

  用户的输入和输出形成了MVC的一个隐含的第四个组件。Smalltalk系统是基于图形显示和标准的用户输入设备,主要是键盘和鼠标。用户菜单被认为是一种虚拟类型的设备,它主要用于传送输入信号给控制器层,就跟键盘和鼠标一样。虽然菜单是在用户图形界面(GUI)中实现的,但是它们不被认为是视图组件。

  MVC设计模式的主要优点是将关注点分离和由此产生的模块化。这种设计将用户界面的呈现与用户输入的操作隔离了,同时也将这两部分与应用程序的状态和事件处理过程隔离了。这就使得当你修改或替换某一个组件时,无需修改甚至无需解会其他部分。它也可以通过为新的接口介质添加一个视图/控制器的组合,或者通过独立于其他组件为模型添加新的功能而增加其可扩展性。

  3.WEB框架中的MVC

  http://www.wendangwang.com MVC2是微软web开发框架的最新版本(Esposito,2010)。它为早期的基于Web Form的http://www.wendangwang.com版本添加了MVC设计架构。http://www.wendangwang.com MVC2为HTTP请求使用一个单一的处理程序,为每一个请求确定并实例化一个合适的控制器。控制器负责处理传入的请求,由模型策划事务处理,为后来的视图元素准备数据,同时激活视图元素使其产生响应。一个控制器类可以包含多个用于响应不同请求的方法,每个方法都作为一个独立的公共方法类。视图在ASP文件中被定义,它是一种带有生成动态内容的服务器脚本的HTML模板。每一个视图从激活它的控制器那里接收信息,无论是作为本地对象还是视图-模型对象,它都是独立的来自模型的数据的合辑,每一个都是为了特定的视图而设计。模型组件用于包含应用程序的逻辑和数据库访问。视图模型之间有一定的区别,数据结构用于传送信息给一个特定的视图元素,而应用程序模型则是域的实体和对它进行操作的相关事务。模型组件还提供对象关系映射,它隐藏了应用程序域对象映射到数据库表的细节。

  Rails是一个用于Ruby(Thomas和Hansson, 2007)编程语言开发的web应用程序框架。HTTP请求

  在Rails中通过核心路由器来处理,核心路由器将请求转到相应的ActionController类和控制器组件内的方法。ActionController对象负责过滤请求参数,通过调用适当的模型元素的方法策划事务,并安排相应的视图响应。ActionController还安排视图元素访问来自模型的数据。控制器控制器元素也负责web会话管理,包括cookie管理。用户界面(视图组件)用过动态的模板文件呈现出来,这些动态模板就是嵌入了Ruby就脚本的标准HTML文档,类似于ASP,PHP,JSP等。视图元素可以在需要的时候访问模型组件并获取数据呈现出来。Rail模型组件包括封装应用程序逻辑的元素和事务处理(ActiveModel),以及一个映射方案相关的对象(ActiveRecord),该对象通过模型元素联合了每一个数据库表。模型也包括提供访问访问外部资源的ActiveResource元素。

  Apache Struts2 框架是基于Java企业版(J2EE)和Java服务器页面( 技术)。Struts2视图组件就是JSP文档,这些文档嵌入了提供多种功能的标签,包括流控制(迭代,条件句),访问Java Bean(模型组件),以及简化HTML表单结构。一个Struts2 web应用程序的控制器组件体现在方法里,这些方法即Java类。一个方法可以响应来自一个或多个JSP页面的用户输入,每一个方法主要负责验证用户输入并通过调用适当的模型操作来协调事务处理。方法通过一个XML配置文件或者通过Java注解机制来定义和配置。这种配置信息通过确定每个方法后的视图来控制web应用程序流,这取决于方法的结果。Struts2中的核心部分是值栈,值栈是用来存储视图和控制器之间的信息流并在需要的时候进行转换。这消除了许多涉及到处理HTTP请求参数和提供信息给JSP页面来显示的细节。

  所有这三个框架在将用户界面组件(视图)与应用程序逻辑(模型)和控制函数(控制器)分离的MVC模式中是保持一致的。当然,他们在某些方面与原始的MVC又有所不同。

  ? 没有内部的视图-模型的依赖(观察者模式):web应用程序中的模型组件不会通知视图元素在

  模型上发生了那些变化。相反,控制器决定视图的行为取决于模型的事务处理的结果。

  ? 没有一一对应的视图-控制器对应关系:在原来的MVC中,每个视图元素有独立的控制器元

  素为了单独的视图元素而定义。

  ? 前端控制器模型:所有这三个框架用了这种模式,单个控制器元素负责响应路由转入的HTTP

  请求,根据该请求的URL和配置数据。

  ? 控制器制定视图动态:控制器决定了哪一个视图跟随者每一个控制器方法,基于方法的结果。

  这相当于一个本质上是视图=控制器的依赖。

  ? 控制器元素负责数据验证:交易数据验证本质上是一个模型函数。验证逻辑可以推入到模型

  组件,但是负责执行验证函数的仍然是控制器。

  ? 模型没有明确的定义:所有的框架都缺少对模型组件的明确定义。它被假定为包含应用程序

  逻辑和数据管理,但是没有明确的结构来定义模型或者将其与控制器干净的分离。

  ? 模型类被实例化的需求:web框架实例化模型对象是由于处理事务的需要以及封装域实体的

  需要,而不是出于坚持一个设想的原始的MVC中的模型组件。但是,数据库或者应用程序的数据持续层可以是持久的模型组件。

  这些MVC模式的变化反映了客户端-服务器架构风格的基本性质优先于Web。视图平台(客户端)被物理地与其他组件分离开,因此视图组件在结构与操作方面与控制器和模型变得不那么紧密。同时,视图承担了一些模型的任务以便提供一个更具响应式的用户界面。控制新增加的任务(前端控制器的函数和视图测序)是必须的,因为需要显示的管理固有的用户体验控制流。

  4.MVC-WEB设计模式

  MVC-Web设计模式在这一节中描述了一个MVC模式中的模型在web应用程序框架中是如何被解释的。MVC-Web反映了MVC设计模式已经在web框架中实现了的革命性的变化。

  MVC-Web模型组件同程负责保留应用程序的状态。它的职责包括:

  ? 数据呈现:维护一个数据库或一个抽象的数据接口

  ? 事务处理:执行在应用程序状态上操作的的程序逻辑

  ? 外部接口:管理与外部代理的互动,例如web服务或者遗留系统

  ? 查询处理:为视图和控制器在响应查询是提供信息

  MVC-Web视图组件呈现了用户界面,包括数据呈现和输入设备。它的职责包括:

  ? 信息检索和显示:呈现信息给用户;必要时查询模型以获得信息用来显示

  ? 用户输入:呈现输入表单和允许用户与程序交互的控件

  ? 客户端动态行为:为用户提供交互式的客户端体验(用JavaScript,Ajax,或者其他方式);这可能

  包含输入实现,输入验证或其他应用程序特定规则和函数的实现,否则这将由模型来完成。

  MVC-Web控制器组件有三个主要职责:

  ? 前端控制器:接受传入的请求并把它们路由到相应的处理程序

  ? 方法处理:接受请求参数;验证请求参数的语法(这可能通过视图元素进行了重复验证);通过

  调用模型元素来编排请求的处理程序

  ? 控制流:调用相应的视图元素作为一个对请求正在被处理的响应,根据方法的结果来调用。

  MVC-Web模式的组件之间的交互有以下方式:

  ? 模型-视图:视图元素会查询模型以获取信息用来显示给用户

  ? 模型-控制器:控制器方法元素要求模型元素传送请求交易。模型函数可以包括执行程序逻辑,

  更新数据库,以及调用外部代理的服务。控制器元素会从模型请求数据并传递给视图元素 ? 控制器-视图:控制器元素对来自视图元素的请求做出响应。控制器也决定了哪一个视图元素

  会被呈现给用户以响应请求。控制器会通过视图元素为用户准备信息。

  这个版本的MVC不同于原始版本(Smalltalk)有以下几几个重要方面:

  ? 观察者模式不是用来吧模型的更新通知给视图和控制器。控制器具有更突出的作用而不是用

  来传播更新

  ? 视图和控制器之间没有一对一的对于关系了。现在已经是多对多的关系了。

  ? 控制器必须能够从多个视图元素(前端控制模式)那里路由请求并能管理程序在响应中的流。控

  制器作为这个功能的一部分可能会从模型传送信息给视图。

  ? 同样的程序逻辑(例如验证或者数据输入完成)可以被呈现在视图和控制器组件。这个可能分离

  的关注点,但是通过给用户提供更快的响应来提高了应用程序的效率。

  这个MVC-Web模式是为了反映当前的MVC在web应用程序中的实现。模式不要求稳定,然而,MVC-Web模式的改进一直在继续,例如在基于Ajax的用户界面中变得更加丰富更具响应效果。这些改变也许会模糊MVC-Web各个组件之间的界限并且降低这种模式提供的模块化的程度。

  参考

  1.

  2.

  3.

  4.

  5.

  6.

  7.

  8.

  9. Barrett, R., Delany, S., 2004, openMVC: A Nonproprietary Component-based Framework for Web Applications, WWW2004. Chun, L., Yanhua, W., Hanhong, L., 2003, A Novel Web Application Frame Developed by MVC, Software Engineering Notes, 28(2). Esposito, D., 2010. Programming Microsoft http://www.wendangwang.com MVC, Microsoft Press. Fowler, M., 2003. Patterns of Enterprise Application Architecture, Addison-Wesley, Boston. Gamma, E., Helm, R., Johnson, R., Vlissides, J.,1995. Design Patterns, Addison Wesley, Reading, MA. Goldberg, A., Robson, D., 1985. Smalltalk-80 : the language and its implementation, Addison-Wesley. Krasner, G.E., Pope, S.T., 1988. A Cookbook for Using the Model-View Controller User Interface Paradigm in Smalltalk-80. Journal of Object-Oriented Programming, 1(3), 26-49. Mahmoud, Q., 2003. Servlets and JSP Pages Best Practices, http://www.wendangwang.com/technetwork/articles/javase/servlets-jsp-140445.html. Thomas, D., Hansson, D.H., 2007. Agile Web Development with Rails. The Pragmatic Bookshelf.

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注视频

沪教版牛津小学英语(深圳用) 四年级下册 Unit 2
七年级下册外研版英语M8U2reading
人教版二年级下册数学
【部编】人教版语文七年级下册《逢入京使》优质课教学视频+PPT课件+教案,辽宁省
沪教版八年级下册数学练习册21.4(1)无理方程P18
外研版英语三起5年级下册(14版)Module3 Unit1
外研版英语七年级下册module3 unit2第一课时
【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,辽宁省
二次函数求实际问题中的最值_第一课时(特等奖)(冀教版九年级下册)_T144339
沪教版牛津小学英语(深圳用) 四年级下册 Unit 4
19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T3763925
每天日常投篮练习第一天森哥打卡上脚 Nike PG 2 如何调整运球跳投手感?
外研版八年级英语下学期 Module3
【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
沪教版八年级下次数学练习册21.4(2)无理方程P19
沪教版八年级下册数学练习册20.4(2)一次函数的应用2P8
苏科版数学七年级下册7.2《探索平行线的性质》
七年级英语下册 上海牛津版 Unit9
六年级英语下册上海牛津版教材讲解 U1单词
外研版英语三起6年级下册(14版)Module3 Unit1
二年级下册数学第一课
30.3 由不共线三点的坐标确定二次函数_第一课时(市一等奖)(冀教版九年级下册)_T144342
【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,江苏省
苏科版数学 八年级下册 第八章第二节 可能性的大小
北师大版数学四年级下册第三单元第四节街心广场
苏科版数学八年级下册9.2《中心对称和中心对称图形》
二年级下册数学第二课
人教版历史八年级下册第一课《中华人民共和国成立》
外研版英语三起5年级下册(14版)Module3 Unit2
【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省