为快速开发web应用设计一个MVC模型外文翻译资料

 2022-05-17 22:45:35

英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料


为快速开发web应用设计一个MVC模型

Dragos-Paul Pop*, Adam Altar

Procedia Engineering 69 (2014 )1172- 1179

罗马尼亚美国大学,1B expozitiei 大道,布加勒斯特,012101,罗马尼亚

*通讯作者。 电话.: 40-724-261-805;

摘要

在本文中,我们提出了一个快速开发Web应用的模型。该模型是基于模型-视图-控制器架构(MVC) 和其他一些有用的组件,比如安全,表单生成和验证,访问数据库和路由。这个模型是使用PHP编程语言实现的,但它可以使用同一设想在其他的开发语言和环境上实现。本研究的主要目标是使用正确的可维护的代码提高开发和维护效率。

在DAAAM International Vienna 的职责下选择并且同行评审。

关键词:模型;视图;控制器;MVC;Web应用;设计模式

1.介绍

自从万维网的开始,web应用程序的发展已经走过了一段很长的历程。各种各样的技术和程序语言正在被用来开发web应用程序,但是因为这些技术并没有足够的时间去随着万维网的进化而及时进化,无法应对万维网的步伐。很多使用者尝试提出不同的奇异的技术来提高用户的体验,并且帮助开发者开发更快更强大的web应用程序。这些技术在web发展中扮演了一个重要的角色,但是在过去几年里,他们的地位有了相当程度的下降,就像Java Applets 和Microsoft Silverlight一样。另一方面,许多技术已经从简单的工具演变成了今天web生态系统强大的重要的一部分,比如,JavaScript,Flash和XML。

今天的web环境使用HTML和CSS将数据展现给用户看,使用JavaScript来实现交互。这些技术被称为“前端”或“客户端”技术。相反的,“后端”或者“服务端”技术是指数据存储和处理技术。

2.问题公式化

一起使用前端技术和后端技术来开发web应用程序,但由于万维网发展速度很快,由于开发人员需要使用很多技术来开发的却仅仅是一个很简单的web应用程序,这样的结果就是,他们的程序经常是难以维护的。

开发者将HTML代码和服务端程序语言结合起来创造一个动态的web页面和应用程序,这会导致代码高度耦合而难以维护。

另一个已经产生的问题是,web技术正在越来越多地地被用来开发各种各样的复杂的应用程序。Microsoft embraces web技术鼓励开发者使用最新的操作系统Windows8来开发应用程序。同时,很多现有的框架帮助开发者为移动设备开发应用程序,比如PhoneGap 和Appcelerator Titanium。甚至,一个手机操作系统正在被使用中,还有一个完全为了开发者提供API (火狐操作系统)的使用web技术的设备即将在今年晚些时候出现。因为这些原因,一个web应用程序通常是由一整个团队开发的,这个团队里有各种开发者,每项工作使用的都是他们各自喜欢的技术,比如表现层的HTML 和CSS,客户端交互的JavaScript,服务器逻辑的PHP (或者ASP,Java,Python,Pearl,Ruby等等)和数据存储和管理的MySQL(或者Oracle Database,Microsoft SQL Server,等等)。

每一个职能负责的开发人员,需要和他的同伴同时协同合作,使用一种方式使得他们的代码块和整个应用程序的设计相融合。举个例子,客户端(数据显示)开发人员需要使用一种方式,保证在修改HTML和CSS 代码的时候,不会破坏在同一文件中的服务端开发人员的代码。同时,当数据库开发人员修改应用程序的数据时,服务端开发人员很可能需要修改很多代码才能使得应用程序正常工作。

需要注意的重要的事,在一个应用程序中,把表现层从逻辑和数据存储当作分离出来是迫切需要的。

很多应用程序设计了一些模式来解决这个问题,但最好的是当今的MVC模式。

在这个研究过程中,我们使用各种系统和框架开发web应用程序来获取经验,试图去识别这些系统的优点和缺点,同时对于如何提高这些系统的实际应用效率提出我们自己的看法。研究的框架和系统包括:Symfony, CakePHP, CodeIgniter Zend Framework, Laravel, Fuel PHP, Ruby on Rails and ASP.NET MVC.

3.MVC模式和文学概述

在这一节中,我们将回顾当前在这一领域的研究状态,并且,看看与MVC模式有关的描述了模式的主要功有组件的文献资料。

MVC设计模式是由Trygve Reenskaug 在1970年代在施乐帕洛阿尔托研究中心第一次提出的。根据他所说的,“MVC的基本目的是在用户的心里模型和存在于计算机中的数据模型之间搭起一座桥梁[1]”。

后来,1988年,在Krasner和Pope的文章《A cookbook for using the model-view controller user interface paradigm in Smalltalk-80》里,对MVC模式进行了更详细的描述,该文章被发表在杂志《Object-Oriented Programming》上。

他们强调,如果在头脑里使用模块化构建一个应用程序,那么将会有很大的益处。“尽可能把各个功能模块分离出来,使应用程序设计人员更容易在不需要了解其他模块的情况下,对自己的模块进行理解和修改。[2]”

一个应用程序被分为三大部分: 主程序的模型,模型的数据显示和用户交互[2]。

MVC模式将职责分给三个主要角色,从而拥有更有效的协同合作的[5]。这些主要的角色是开发,设计和集成。

开发的角色是由富有经验的程序员担任的,他们的职责是应用程序的逻辑问题。他们关心数据查询,验证,处理以及其他更多的逻辑。

设计的角色的的开发者的职责是负责应用程序的外观和感觉。他们提供数据显示给第一角色的开发人员。

集成角色的职责是收集由担任前两种角色的开发人员的工作的[5]。

MVC设计模式适合web应用程序开发,因为他们通过结合多种技术将程序分层开发。同时,MVC特定的行为可以在不同类型的用户代理之间发送特定的视图[5]。

“一个MVC应用程序的用户交互遵循着一个自然周期:用户发生动作,应用程序改变它的数据模型,然后返回一个更新视图给用户[1]。”

图1 MVC模式

Source: http://stackoverflow.com/questions/5966905/which-mvc-diagram-is-correct-web-app

3.1模型

模型是系统的一部分,它会管理所有相关任务的数据,验证,会话状态和控制,数据源结构(数据库)。模型大大减少了开发人员需要编写的代码的复杂性[6]。

模型层负责应用程序的业务逻辑。它通过封装的方法来访问数据(数据库,文件,等等),并提供一个可重用的类库。通常,模型是基于抽象、验证和认证的抽象数据建立的[4]。

另外,模型是由类组成的,这些类定义了受关往的域[6]。

结论就是,模型主要处理数据访问的抽象和验证。模型提供一些方法用于支持不同数据源之间的交互。

我们相信,在瘦模型方法中所说的,一个模型应该尽可能地简单,只包含数据处理,那些完全与现实生活有关的模块化的数据。瘦模型与胖控制器相联系,其中存有应用程序所需的大部分的数据处理。通过这种方式,在应用程序和大部分在控制器上开发的程序员之间,模型保持了高度的可重用性。

新奇的是,我们的模型系统带给MVC世界的是一个用于版本控制的系统,一个基于数据传送的想法,除了数据本身,它不会持续关注数据的结构。这个系统使用XML文件在数据传送之间存储数据,这使得数据库的版本控制过程成了一件容易完成的事。

3.2视图

视图负责用户的图形界面管理。这包括了所有在应用程序中的表单、按钮、图形元素和其他HTML元素。视图也可以被用来生成RSS 内容聚合器或者Flash演示。通过将应用程序设计从应用程序的逻辑中分离出来,当设计人员决定更改应用程序的界面的logo或者表格时,我们可以大大降低出错的风险。与此同时,开发人员的工作量也大大减少了,因为他们不再需要去关注HTML代码元素,不需要去设计元素和图形元素[6]。

视图层通常也被称为web设计或模版。它控制着数据被显示的方式以及和用户进行交互的方式。它还提供了从用户处收集数据的方法。视图中使用的技术主要有HTML,CSS和JavaScript[4]。

作为一般规则,一个视图不能包含属于应用程序逻辑部分的元素,以此来使得设计人员更容易来使用它工作。这意味着逻辑块应该保持在最低限度。

今天大多数web应用程序框架使用各种模版引擎,这些模版利用生成器元素可以保证HTML代码的数量在最少,同时降低拼写错误的风险。这些生成器通常用来制作一些复杂的web模版,比如表单,表格,列表,菜单等等。在这种情况下,我们确认的问题是,所有想法的实现都需要用到对开发人员来说不透明的生成器模版。通过这种方式,一个前端开发人员只能看到在代码被生成之后执行的结果,而没有任何方法去修改模版。我们的系统采用特殊的HTML注释来插入和生成基于模版的部分HTML文件。预处理系统采用注释来解释特殊的命令,用来把数据插入模版。这使得整个对于前端开发人员来说都是很透明的,他们可以在绘制视图之前看到整个标记。

3.3控制器

控制器负责事件处理。这些由用户触发的事件,能够和应用程序或者系统进程进行交互。控制器可以接受请求,可以准备数据来进行响应。它也负责建立响应的格式。控制器与模型进行交互,以此来检索所需要的数据并且生成视图。这个过程也被称为一个动作或动词[6]。当一个请到到达服务器,MVC框架会根据URL给它分配一个控制器中的方法[14]。

控制器捆绑所有的应用程序逻辑,将视图的显示和模型的函数相结合。它负责从视图中检索数据,建立应用程序的执行路径。控制器能够访问模型的函数,并且它能够接收数据使得在视图中显示。它也负责错误处理[4]。

控制器管理视图和模型之间的关系。它响应用户的请求,与模型进行交互,并且决定哪个视图应该被生成并显示[6]。

如上所述,我们接受胖控制器方法,相信所有特定的应用程序的数据处理应该在控制器层处理。

为了请求和响应,我们的控制器系统会是一个架构样式的网络系统,并且支持JSON(P)text和XML数据格式。

4.数据库抽象化

使用对象来开发面向对象编程的应用程序。这些对象反映了现实生活中的对象,包含了对象的数据和行为。关系模型被广泛应用于应用程序中的数据存储,这些应用程序使用表来存储数据,并且使用数据操纵语言来进行数据交互。一些数据库管理系统拥有面向对象的特性,但它们并不是完全兼容的。很明显的是,在从现在开始的很长一段时间里,这两个架构会一直被广泛地使用。此外,大部分时间,关系模型和面向对象编程是被用来一起开发应用程序。但这两种技术的结合远非完美。“Object-relational mapping systems were developed solely to address this issue”这个术语被用来说明上面所说的不匹配[7]。

在不匹配的背后存在的原因是,这两种技术依赖于不同的思想。面向对象编程依赖于编程思想,而关系模型遵循的是数学原理。

为了完全解决这个问题,对象关系映射系统应运而生。

图2 ORM系统

Source:http://danhartshorn.com/2011/12/object-relational-mapping-wikipedia-the-free-encyclopedia

一个对象关系映射系统(0RM)被定义为一种工具,它提供一个面向对象的方法和机制以安全的方式来存储数据,并且在数据库中的很长一段时间里,能够通过事务控制它们,但需要说明的是,如果需要,它也可以作为应用程序内部中的对象[8]。

ORM 系统减少了开发人员对了解数据库结构或数据库模式的担心[9]。总之,我们可以说对象关系-映射系统是一种把编程语言中的类和关系系统中的数据相关联的方式,它允许开发人员使用众所周知的思想来进行开发,即从面向对象编程来管理关系系统中的数据。

MVC平台必须为开发人员提供一个方法与数据库管理系统进行数据交互,进行数据存储和数据检索。大多数时候,这是一个集成的ORM系统。

因为在MVC架构中,模型是与数据交互的一层,ORM系统隐藏在其之后。基本上,每个模型连接到ORM系统后,它都会使用该系统进行数据交互。但是开发人员可能不需要通过模型来访问ORM系统的资源。

我们的ORM系统支持在对象和最长的对象链之间的多对多关系。

同时,我们]提供一个选项来确保内存中保存有确定的数据集,并且,跳过数据查询步骤,以此将响应时间减少到最低限度。

目前,NoSQL数据存储是被重视的,我们支持一个接口来访问这些系统。这个接口是ORM系统的一部分。

5.安全

Web应用程序漏洞是用户的业务环境会受到攻击的主要原因[10]。

开发人员在开发web应用程序的时候需要注意很多地方。

安全风险可以分为几类[11]:<!--

全文共9113字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[12222],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。