英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料
设计一个用于快速开发Web应用程序的MVC模型
Dragos-Paul Pop *,Adam Altar
罗马尼亚 - 美国大学,1b Expozitiei Blvd.,Bucharest,012101,Romania
摘要:在本文中,我们提出了一个快速进行Web应用程序开发的模型。该模型基于模型-视图-控制器架构(MVC),还有其他几个有用的组件,如安全性,表单生成和验证,数据库访问路由等。该模型是使PHP编程语言实现的,但可以在其他语言开发环境中使用相同的概念。
开发和维护时间的改善都是这项研究的主要目标,并且代码可维护性增加等附加好处。
关键词:模型; 视图;控制器;MVC; Web应用程序; 设计模式;
- 介绍
Web应用开发自万维网开始以来已经走了很长的路。 无数的技术和编程语言现在被用来构建Web应用程序,但是由于万维网的发展速度过快,所以这些技术并没有真的有时间来演变并应对它的步伐。 许多开发人员试图提出不同的和充满异国情调的技术来改进用户体验,并且帮助开发人员构建更快,更强大的Web应用程序。 其中一些技术在网络发展中发挥了重要作用,但在过去几年中,Java Applet和Microsoft Silverlight的使用量却出现了重要的下降。 另一方面,许多技术已经从简单的开发产物发展成为当今强大网络系统的重要部分,如JavaScript,Flash和XML。
如今大多数Web应用使用HTML和CSS向用户显示数据,并通过JavaScript来实现相互作用。 这些技术被称为“前端”或“客户端”技术。 另一方面,“后端”或“服务器端”技术是指数据存储和处理技术。
- 主要问题
前端和后端技术汇聚在一起构建Web应用程序,但因为万维网已经以这么快的速度发展,而开发人员却需要使用相当多的技术来构建一个只具有单一功能的Web应用程序,他们工作的结果就是往往很难维护和修复原来的代码。
开发人员将HTML代码与服务器端编程语言相结合,以创建动态网页应用程序,这导致高度纠缠和不可维护的代码。
另一个问题是网络技术越来越多地被用于建立各种各样复杂的应用。微软接受并鼓励开发人员为其最新的操作系统,Windows 8创建网络技术。此外,还有许多框架可以帮助Web开发人员编写应用程序移动设备,如PhoneGap和Appcelerator Titanium。更重要的是,移动操作系统正在进行中,预计今年晚些时候将使用Web技术完全用于开发人员API(Mozilla Firefox OS)的设备。由于这些原因,Web应用程序通常由整个专业开发人员团队创建,每个团队都在工作中用他们最喜爱的技术,如表示层的HTML和CSS,用于客户端交互的JavaScript,用于服务器端逻辑和MySQL(或Oracle数据库,Microsoft SQL)的PHP(或ASP,Java,Python,Pearl,Ruby等)服务器等进行数据存储和管理。
每个专家都需要与他们的同事一起工作,使他们的代码片段适合整体设计的应用。例如,客户端(数据呈现)开发者需要改变HTML和CSS代码,这样他就不会破坏驻留在同一个文件中的服务器端开发人员的代码。当数据库开发人员更改应用程序的架构时,服务器端开发人员可能需要更改许多应用程序代码使应用程序工作。
这里要注意的一个重要事情是,需要将演示文稿与逻辑和数据存储区分开来在一个应用程序。有一些应用程序设计范例和模式可以为这个问题提供解决方案,但重点如今的MVC模式。
在进行研究时,我们使用我们的经验是构建具有各种系统的Web应用程序框架,我们已经试图确定这些系统的优点和缺点,同时提供我们自己的了解如何改进这些做法。研究的框架和系统包括:Symfony,CakePHP,CodeIgniter Zend Framework,Laravel,Fuel PHP,Ruby on Rails和ASP.NET MVC。
3. MVC模式和文献综述
在本节中,我们将回顾这一领域研究的现状,并对其背后的文献进行研究MVC模式,描述模式的主要功能部分。20世纪70年代由施乐公司在施乐公司第一次设想了MVC设计模式。根据他所说,“MVC的基本目的是弥合人类用户心理模式与数字化之间的差距并在计算机中存在的模型“。 [1]
后来,1988年,Krasner和Pope在他们的文章“A cookbook”中详细描述了MVC范例,“在Smalltalk-80中使用模型视图控制器用户界面范例”,发表在ObjectOriented编程杂志上。
他们强调,如果以建立模块化的应用程序,就有巨大的好处。“尽可能多地将功能单元彼此隔离,使应用程序设计人员更容易了解和修改每个特定单位,而不必了解其他单位的一切。“[2]
应用程序分为三大类:主要应用领域的模型,演示的模型和用户交互中的数据。 [2]
MVC模式将责任分为三个主要角色,从而实现更有效的协作。 [3]这些主要角色是开发,设计和集成。
开发角色由负责逻辑的有经验的程序员承担应用。他们负责数据查询,验证,处理等。
设计角色是为应用程序的外观和感觉负责的开发人员。他们显示的数据是从开发第一个角色的开发人员处获得的。
集成角色收集开发人员,负责粘合以前两个角色的工作。 [3]
MVC设计模式非常适合Web应用程序开发,因为它们结合了几个技术通常分为一组层次。此外,MVC的具体行为可能是同类型的用户代理发送具体的视图。 [13]
“与MVC应用程序的用户交互遵循自然循环:用户采取行动,并作为响应应用程序更改其数据模型,并向用户传递更新的视图。然后循环重复。这是一个非常方便适用于作为一系列HTTP请求和响应提供的Web应用程序。“[4]
3.1模型
模型是系统的一部分,它负责管理与数据有关的所有业务逻辑:验证,会话状态和控制,
数据源(数据库)。该模型大大降低了开发人员编写的代码的复杂性。[5]
模型层负责应用程序的业务逻辑。它将封装访问数据(数据库,文件等)的方法,并将使用可重用的类库。通常一个模型是用数据构建的抽象方法,验证和认证操作。 [4]
此外,该模型由定义该领域的类组成。属于这些对象的域通常会封装存储在数据库中的数据,还包括用于操作数据的代码数据和执行业务规则。 [6]
作为结论,该模型主要处理数据的抽象访问和验证。该模型持有与不同数据源交互的方法。
我们相信简单的Model,它表示一个模型应尽可能的简单包含与被建模的真实生活对象严格相关的数据处理。 简单Model与一个丰富的控制器是耦合的,其中包含应用程序所需的大部分数据处理。这样,模型在应用程序之间变得高度可重用,大多数开发人员的工作都在控制器中进行。
3.2视图
视图负责图形用户界面管理。这意味着所有的形式,如按钮,图形元素和应用程序内的所有其他HTML元素。视图也可用于生成RSS类型或Flash演示文稿的内容。通过将应用程序的设计与逻辑分离,使应用程序大大降低了设计人员通过更改标志或表格来应用引起界面编号而产生错误的风险。与此同时,开发人员的工作大大减少,因为他没有必要花更长的时间需要看HTML代码,设计元素和图形元素。 [5]
视图层通常称为网页设计或模板。它控制数据显示的方式和用户如何与之互动。它还提供了从用户接收数据的方法。主要用于视图的技术是HTML,CSS和JavaScript。 [4]
作为一般规则,视图不应包含属于应用程序逻辑的元素,以便更容易供设计师使用。这意味着逻辑块应该保持在最低限度。
大多数Web应用程序框架今天使用某种模式引擎来生成页面元素,以便将HTML代码保持在最低限度,并降低输入错误的风险。这些生成器通常用于制作复杂的Web元素,如表单,表格,列表,菜单等。在这个例子中,我们能确定的问题是这个想法的所有实现都使用幕后或不透明的部分生成。这样导致前端开发人员只能在生成后才能看到生成的代码,几乎没有办法修改模板。我们的系统使用特殊的HTML注释来插入和生成基于HTML模板的部分。预处理系统使用注释来解释特殊命令以便把数据插入模板。这使得前端开发人员非常透明的看到标记在视图渲染之前的整个过程。
3.3.控制器
控制器负责事件的处理。这些事件可以由用户操作应用程序或系统进程来触发。控制器接受请求并准备响应的数据。它同时也负责建立该回应的格式。控制器与模型进行交互以便检索出所需的数据并生成相应的视图。这个过程也被称为一个执行动作。 [5]当一个请求到达服务器,MVC框架根据URL将其分配到某个控制器中的某个方法。 [14]
控制器绑定所有应用程序逻辑,并在模型中将视图的显示与功能结合在一起。它负责从视图中检索出数据并且创建应用的执行路径。控制器将去执行模型中的功能,并解释返回的数据,以便于它可以被视图显示。它也可以负责处理捕获的异常错误。 [4]
控制器管理视图和模型之间的关系。它响应用户请求,与模型进行交互并决定应生成和显示哪个视图。 [6]
如上所述,我们称赞控制器拥有强大的功能,相信所有应用程序特定的数据处理应在控制器中处理。
我们的控制器系统是强大的,支持JSON(P),文本和XML数据格式的请求和响应。
- 数据库抽象
在面向对象编程中,使用对象构建应用程序。 这些对象反映了现实生活中的对象它们同时包含数据和行为。 广泛应用于应用程序数据存储的关系模型用于存储与该数据交互的数据和数据操作语言的表。 一些数据库管理系统具有面向对象的功能,但它们不完全兼容。 这两个架构将从现在起很长一段时间被很清楚的广泛使用。此外,关系模型和面向对象编程大多数时候都被用于构建每个规模的应用程序。 但两种技术的结合方式是远离完美。 用于这种不匹配的术语是“对象 - 关系阻抗不匹配”。[7]
这种不匹配的原因是这两种技术依赖于不同的概念。 面向对象编程依赖于证明的编程概念,而关系模型遵循数学原理。对象关系映射系统是为了解决这个问题而开发的。
对象关系映射系统(ORM)被定义为提供方法和工具的工具面向对象的系统在数据库中以安全的方式存储数据并持续长时间的机制对它们进行事务性控制,但如果需要,可以将其表示为应用程序内的对象。 [8]
ORM系统可以让开发人员免于了解数据库结构或架构的担心。数据访问是使用反映开发人员业务对象的概念模型完成。 [9]
总之,我们可以说一个对象关系映射系统是一种关联关系数据的方法系统具有编程语言的类,允许开发人员使用众所周知的概念面向对象编程来管理来自该关系系统的数据。
MVC平台必须为开发人员提供一种与数据库管理系统进行交互的方式进行存储并检索数据。大多数时候,这是一个集成的ORM系统。
因为在MVC架构中,Model是与数据交互的层,ORM系统被隐藏在它后面基本上,每个模型都连接到ORM系统,它使用系统与数据进行交互。但开发人员可以访问ORM系统的资源,而无需使用模型。
我们的ORM系统支持对象之间的多对多关系,并具有最大深度级的设置用于对象链接。 此外,我们还提供了一些选项来保留内存中的某些数据集,并跳过数据库查询,从而减少响应时间。
就NoSQL数据存储而言,我们支持一个接口访问多个这样的系统。这个接口是ORM系统的一部分。
- 安全
Web应用程序漏洞是企业环境中用户受到攻击的主要原因。 [10]
开发人员在构建Web应用程序时需要注意很多事情。
安全风险可以分为以下几类:[11]
- 用户输入验证:缓冲区溢出,跨站点脚本,SQL注入,规范化;
- 认证:网络嗅探,暴力攻击,字典攻击,cookie伪造,身份窃取;
- 授权:访问权限违规,私人数据显示,数据更改,缠扰攻击;
- 配置管理:未经授权的访问管理界面,未经授权的访问;
- 配置区域,访问存储为文本的配置数据,缺少操作日志记录;
- 敏感信息:访问数据库中的敏感数据库,网络嗅探,数据更改;
- 会话管理:会话窃取,会话更改,中间人攻击;
- 加密:弱安全密钥,弱加密;
- 参数操作:查询字符串,表单域,cookie和HTTP头操纵;
- 异常管理:DOS攻击;
开发人员需要保护所有这些类型的攻击和安全需求,以便在每一层进行处理MVC架构。我们的系统建议内置了CSRF攻击防范,一个简单的认证模式,一个复杂的角色安全系统和高度可定制的资源访问控制列表。
- 路由
HTTP协议处理URL写入的方式与在Unix中写入资源路径的方式非常相似环境。[12]
Web服务器考虑到这一点,并隐含地在分层文件系统中查找数据。
这种访问资源的方式比较容易直观,但随着Web应用程序的复杂性的增长,需要一个更好的系统出现。 为了解决这个问题,我们可以配置Web服务器和开发框架这样一种方式将以独特的方式解读结果并访问资源。
这些系统称为URL映射或URL路由系统。 该技术也称为URL美化和帮助开发人员构建有序和不错的URL数据,用户和搜索引擎可以更好地处
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[25502],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。