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

 2021-11-26 10:11

英语原文共 8 页

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

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

巨龙保罗·波普,亚当·罗陀

罗马-美国大学,1b Expozitiei Blvd。,布加勒斯特,012101,罗马尼亚

摘要

在本文中,我们提出了一个快速开发web应用程序的模型。这个模型基于模型-视图-控制器架构(MVC)和其他几个有用的组件,如安全性、表单生成和验证、数据库访问和路由。这个模型是使用PHP编程语言实现的,但是可以在其他开发中实现使用相同概念的语言和环境。在开发和维护时间上都得到了改进本研究的主要目标是,提供正确且可维护的代码。

copy;2014作者。爱思唯尔有限公司出版

由维也纳达姆国际组织负责遴选和同行评议。

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

1. 介绍

自从万维网诞生以来,Web应用程序的开发已经取得了长足的进步。现在有无数的技术和编程语言被用来构建web应用程序,但是由于万维网的发展方式以及它的发展速度,这些技术并没有真正的时间来发展和应对这种发展速度。许多玩家试图提出不同的、新奇的技术,主要是为了改善用户体验,并帮助开发人员构建更快、更强大的web应用程序。其中一些技术在web开发中发挥了重要作用,但在过去几年中,它们的使用出现了显著下降,比如Java applet和Microsoft Silverlight。另一方面,许多技术已经从简单的玩具发展成为当今web生态系统中强大而重要的部分,如JavaScript、Flash和XML。

今天的web环境使用HTML和CSS向用户显示数据,交互是通过JavaScript完成的。这些技术称为“前端”或“客户端”技术。另一方面,“后端”或“服务器端”技术是指数据存储和处理技术。

2. 问题公式化

前端和后端技术一起来构建web应用程序,但是因为万维网发展如此快速地增长,因为开发人员需要使用相当多的技术来构建一个web应用程序,他们的工作的结果是常常难以维护和修复。

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

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

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

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

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

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

3.MVC模式和文献综述

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

MVC设计模式最初是由Trygve Reenskaug在20世纪70年代在Xerox Parc提出的。他认为,“MVC的本质目的是在人类用户的心理模型和计算机中存在的数字模型之间架起一座桥梁”。

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

他们强调,如果在构建应用程序时考虑到模块化,那么将会获得巨大的好处。“尽可能地将功能单元相互隔离,这使得应用程序设计人员更容易理解和修改每个特定单元,而不必了解其他单元的所有信息。”

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

MVC模式将职责划分为三个主要角色,从而允许更有效的协作。这些主要角色是开发、设计和集成。

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

设计角色是为负责应用程序外观的开发人员设置的。它们显示来自处理第一个角色的开发人员的数据。

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

MVC设计模式非常适合web应用程序开发,因为它们将几种技术组合成一组层。此外,MVC特定的行为可以是向不同类型的用户代理发送特定的视图。

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

图1 MVC模式

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

3.1模型

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

模型层负责应用程序的业务逻辑。它将封装访问数据(数据库、文件等)的方法,并提供可重用的类库。通常,模型是在考虑数据抽象、验证和身份验证的情况下构建的。

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

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

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

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

3.2视图

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

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

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

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

3.3控制器

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

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

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

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

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

4. 数据库抽象

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

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

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

图2. ORM系统

定义一个对象关系映射(ORM)系统作为一个工具,提供了一种方法和面向对象的机制系统以安全的方式来存储数据和数据库中很长一段时间,事务控制这些情绪,但表示,如果需要,作为对象内部的应用程序

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

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

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

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

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

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

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

5. 安全

Web应用程序漏洞是业务环境中攻击用户的主要原因。

在构建web应用程序时,开发人员需要注意许多事情。

安全风险可以分为几个类别:

用户输入验证:缓冲区溢出、跨站点脚本、SQL注入、规范化;

认证:网络嗅探、蛮力攻击、字典攻击、cookie伪造、身份盗窃;

授权:访问权限侵犯、私有数据显示、数据篡改、跟踪攻击;

配置管理:未授权访问管理界面,未授权访问配置区域,未授权访问存储为文本的配置数据,缺少动作日志记录;

敏感信息:对数据库中敏感数据的访问、网络嗅探、数据修改;

会话管理:会话盗窃、会话篡改、中间人攻击;

加密:弱安全密钥、弱加密;

参数操作:查询字符串、表单字段、cookie、HTTP报头操作;

异常管理:DOS攻击;

开发人员需要抵御所有这些类型的攻击,并且需要在MVC体系结构的每一层处理安全性。

我们的系统方案构建了CSRF攻击预防、简单的身份验证模式、复杂的基于角色的安全系统和高度可定制的资源访问控制列表。

6. 路由

HTTP协议处理URL编写的方式与Unix环境中资源路径的编写方式非常相似。

Web服务器记住这一点,并隐式地在分层文件系统中查找数据。

这种访问资源的方式相对简单直观,但是随着web应用程序复杂性的增

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

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