为快速Web应用程序开发设计MVC模型外文翻译资料

 2021-11-17 11:11

英语原文共 8 页

2013年第24届达姆(DAAAM)智能制造与自动化国际研讨会

为快速Web应用程序开发设计MVC模型

Dragos-Paul Pop*, Adam Altar

Romanian-American University, 1b Expozitiei Blvd., Bucharest, 012101, Romania

摘要:

在本文中,我们提出了一个快速Web应用程序开发的模型。该模型基于模型-视图-控制器体系结构(MVC),并具有其他一些有用的组件,如安全性,表单生成和验证,数据库访问和路由。这个模型是使用PHP编程语言实现的,但是可以使用相同的概念在其他开发语言和环境中实现。开发和维护时间的改进是本研究的主要目标,同时还带来了正确和可维护代码的额外好处。

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

一、简介

自万维网诞生以来,Web应用程序的开发已经走过了漫长的道路。现在有无数的技术和编程语言被用于构建Web应用程序,但由于万维网的发展方式以及它的发展速度,这些技术并没有真正的时间来发展和应对这种速度。许多参与者试图开发出不同的、奇特的技术,主要是改善用户体验,帮助开发人员构建更快、更强大的Web应用程序。这些技术在Web开发中起到了重要作用,但在过去几年中,Java Applets和Microsoft Silverlight的使用量有了很大的下降。另一方面,许多技术已经从简单的玩具发展到今天网络生态系统中强大而重要的部分,如JavaScript、flash和xml。

现在的Web环境使用HTML和CSS向用户呈现数据,并且通过JavaScript完成交互。这些技术被称为“前端”或“客户端”技术。另一方面,“后端”或“服务器端”技术是指数据存储和处理技术。

二、问题公式化

前端和后端技术结合在一起构建Web应用程序,但由于万维网的发展速度如此之快,而且由于开发人员需要使用相当多的技术来构建单个Web应用程序,因此他们的工作结果通常很难维护和修复。

开发人员将HTML代码与服务器端编程语言结合起来创建动态网页和应用程序,这会导致高度纠缠和无法维护的代码。

另一个问题是Web技术越来越多地被用于构建各种复杂的应用程序。微软采用网络技术来鼓励开发人员为其最新的操作系统Windows8开发应用程序。此外,还有许多框架可以帮助Web开发人员为移动设备编写应用程序,如PhoneGap和Appcelerator Titanium。更重要的是,一个移动操作系统正在开发中,预计今年晚些时候将完全为开发者API(Mozilla Firefox OS)使用Web技术。由于这些原因,Web应用程序通常由一组专门的开发人员创建,每一个都使用他们最喜欢的技术,比如HTML和CSS用于表示层,JavaScript用于客户端交互,PHP(或ASP、Java、Python、Pearl、Ruby等)用于服务器端逻辑和MySQL(或Oracle数据库、Microsoft SQL Server)用于数据存储和管理。

这些专家中的每一个都需要与他们的同事一起工作,使他们的代码片段适合于应用程序的总体设计。例如,客户端(数据表示)开发人员需要修改HTML和CSS代码,这样他就不会破坏驻留在同一文件中的服务器端开发人员的代码。此外,当数据库开发人员更改应用程序的模式时,服务器端开发人员可能需要更改大量代码才能使应用程序正常工作。

这里需要注意的重要一点是,迫切需要将表示与应用程序中的逻辑和数据存储分离开来。

有一些应用程序设计范例和模式提供了解决这个问题的方案,但现在的重点是MVC模式。

在进行研究时,我们使用了我们的经验,即使用各种系统和框架构建Web应用程序,我们尝试确定这些系统的优点和缺点,同时提供我们自己对如何改进这些实践的看法。 研究的框架和系统包括:Symfony,CakePHP,CodeIgniter Zend Framework,Laravel,Fuel PHP,Ruby on Rails和ASP.NET MVC。

三、MVC模式和文献综述

在本节中,我们将回顾该领域的研究现状,并查看MVC模式背后的文献,描述模式的主要功能部分。

MVC设计模式最初是由Trygve Reenskaug在20世纪70年代在施乐公园(Xerox Parc)设想的。他认为,“MVC的基本目的是缩小人类用户的心理模型与计算机中存在的数字模型之间的差距”。[1]

后来,在1988年,Krasner和Pope在他们发表在《面向对象编程杂志》上的文章《在Smalltalk-80中使用模型-视图-控制器用户界面范例的食谱》中详细描述了MVC范例。

他们强调,如果在构建应用程序时考虑到模块化,将会获得巨大的好处。“尽可能地将功能单元彼此隔离,使应用程序设计者更容易理解和修改每个特定单元,而无需了解其他单元的所有信息。”[2]

应用程序被分为三个主要类别:主应用程序域的模型、模型中的数据表示和用户交互。[2]

MVC模式将职责分为三个主要角色,从而实现更高效的协作。[3]这些主要角色是开发,设计和集成。

开发角色由负责应用程序逻辑的有经验的程序员承担。他们负责数据查询,验证,处理等。

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

集成角色将负责粘合前两个角色的工作的开发人员聚集在一起。[3]

MVC设计模式非常适合Web应用程序的开发,因为它们结合了通常分为一组层的几种技术。此外,MVC特定的行为可能是向不同类型的用户代理发送特定的视图。[13]

“用户与MVC应用程序的交互遵循一个自然循环:用户执行一个操作,并响应应用程序更改其数据模型并向用户提供更新的视图,然后循环重复。这非常适合作为一系列HTTP请求和响应交付的Web应用程序。“[4]

图1 MVC模式

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

3.1模型

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

模型层负责应用程序的业务逻辑。它将封装访问数据(数据库、文件等)的方法,并使可重用类库可用。通常,一个模型是建立在考虑数据抽象、验证和身份验证的基础上的。[4]

此外,该模型由定义相关领域的类组成。这些属于域的对象通常封装存储在数据库中的数据,但也包括用于操作这些数据和执行业务规则的代码。[6]

综上所述,该模型主要处理数据访问抽象和验证。该模型包含与不同数据源交互的方法。

我们相信瘦模型方法,即模型应该保持尽可能简单,只包含与被建模的真实对象严格关联的数据处理。瘦模型与一个胖控制器耦合,胖控制器包含了应用程序所需的大部分数据处理。通过这种方式,模型在应用程序之间变得高度可重用,并且开发人员的大部分工作都保存在控制器中。

我们的模型系统带给MVC世界的新奇之处在于它是一个基于迁移思想的版本控制系统,它不仅跟踪数据结构,而且跟踪数据本身。系统使用XML文件在迁移之间存储数据,使得数据库的版本控制过程很容易实现。

3.2视图

视图负责图形用户界面管理。这意味着应用程序中的所有表单、按钮、图形元素和所有其他HTML元素。视图还可以用于为聚合器或Flash演示生成RSS内容。通过将应用程序的设计与应用程序的逻辑分离,我们可以大大降低当设计人员决定通过更改徽标或表来更改应用程序的接口时出现错误的风险。同时,开发人员的工作也大大减少了,因为他不再需要查看HTML代码元素、设计元素和图形元素。[5]

视图层通常可以称为Web设计或模板。它控制数据的显示方式以及用户与数据交互的方式。它还提供了从用户收集数据的方法。视图中主要使用的技术是HTML,CSS和JavaScript。[4]

一般来说,视图不应包含属于应用程序逻辑的元素,以便于设计人员更容易的使用它。这意味着逻辑块应保持在最低限度。

如今,大多数Web应用程序框架都使用某种模板引擎,该引擎利用生成器元素将HTML代码保持在最低限度并降低键入错误的风险。这些生成器通常用于制作复杂的Web部分,如窗体,表,列表,菜单等。在本例中,我们发现的问题是,这个想法的所有实现都使用幕后或不透明的部分生成。这样,前端开发人员只能在生成代码后才能看到生成的代码,几乎没有修改模板的方法。我们的系统使用特殊的HTML注释来插入和生成基于模板的部分,这些模板也是仅HTML文件。预处理系统使用注释来解释特殊命令,以便将数据插入模板中。这使得整个过程对于前端开发人员非常透明,他们可以在呈现视图之前查看整个标记。

3.3控制器

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

控制器绑定所有应用程序逻辑,并将视图中的显示与模型中的功能结合起来。它负责从视图中检索数据,并为应用程序建立执行路径。控制器将访问模型功能,并解释接收到的数据,以便视图显示这些数据。它还负责错误处理。[4]

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

如上所述,我们采用胖控制器方法,认为所有特定于应用程序的数据处理都应该在控制器级别处理。

我们的控制器系统是RESTful的,支持请求和响应的JSON(P)、文本和XML数据格式。

四、数据库抽象

在面向对象编程中,应用程序是使用对象构建的。这些对象反映现实生活中的对象,它们包含数据和行为。广泛用于应用程序中数据存储的关系模型使用表来存储数据,并使用数据操作语言与数据交互。有些数据库管理系统具有面向对象的特性,但它们并不完全兼容。很明显,这两种体系结构得到了广泛的应用,并将在今后很长一段时间内得到应用。此外,关系模型和面向对象编程在大多数情况下都被用于构建各种规模的应用程序。但这两种技术的结合方式还远远不够完美。用于这种不匹配的术语是“对象-关系阻抗不匹配”。[7]

这种不匹配背后的原因是这两种技术依赖于不同的概念。面向对象编程依赖于已证明的编程概念,而关系模型则遵循数学原理。

对象关系映射系统的开发就是为了解决这个问题。

对象关系映射系统(ORM)被定义为一种工具,它为面向对象的系统提供一种方法和机制,以安全的方式在数据库中长时间存储数据,并对其进行事务控制,但在需要时被表示为应用程序内的对象。[8]

图2 ORM系统

资料来源:http://danhartshorn.com/2011/12/object-relational-mapping-wikipedia-the-free-encyclopedia

ORM系统使开发人员不必担心了解数据库结构或模式。数据访问是使用反映开发人员业务对象的概念模型来完成的。[9]

总之,我们可以说对象关系映射系统是一种将来自关系系统中的数据与编程语言中的类相关联的方法,允许开发人员使用面向对象编程中的众所周知的概念来管理该关系系统中的数据。

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

因为在MVC架构中,模型是与数据交互的层,所以ORM系统隐藏在其后面。基本上,每个模型都连接到ORM系统,并使用该系统与数据交互。但开发人员可以在不使用模型的情况下访问ORM系统的资源。

我们的ORM系统支持对象之间的多对多关系,并为对象链接设置了最大深度级别。

此外,我们还提供了将某些数据集保留在内存中并跳过数据库查询的选项,从而将响应时间降到最低。

就NoSQL数据存储而言,我们支持一个接口来访问许多这样的系统。这个接口是ORM系统的一部分。

五、安全

Web应用程序漏洞是对业务环境中的用户进行攻击的主要原因。[10]开发人员在构建Web应用程序时需要注意很多事情。

安全风险可分为以下几类:[11]

bull;用户输入验证:缓冲区溢出,跨站点脚本,SQL注入,规范化;
bull;身份验证:网络嗅探,暴力攻击,字典攻击,cookie伪造,身份盗用;
bull;授权:访问权限侵犯,私有数据显示,数据更改,跟踪攻击;
bull;配置管理:未经授权访问管理界面,未经授权访问配置区域,访问以文本形式 存储的配置数据,缺少操作日志记录;
bull;敏感信息:访问数据库中的敏感数据,网络嗅探,数据更改;
bull;会话管理:会话盗窃,会话更改,中间人攻击;
bull;加密:弱安全密钥,弱加密;
bull;参数操作:查询字符串,表单字段,cookie和HTTP报头操作;
bull;异常管理:DOS攻

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

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