英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料
第24届DAAAM智能制造与自动化国际研讨会,2013
为快速Web应用程序开发设计一个MVC模型
Dragos-Paul Pop*, Adam Altar
摘要
在本文中,我们提出了一个快速Web应用程序开发的模型。 该模型基于模型 - 视图 - 控制器体系结构(MVC),并具有其他几个有用的组件,如安全性,表单生成和验证,数据库访问和路由。 这个模型是使用PHP编程语言实现的,但是它可以在其他开发语言和环境中使用相同的概念来实现。 开发和维护时间的改进一直是这项研究的主要目标,还有正确和可维护代码的额外好处。
关键词:模型; 视图; 控制器; MVC; Web应用程序; 设计模式
1.介绍
自万维网开始以来,Web应用程序的开发已经走过了很长时间。 现在,大量的技术和编程语言被用于构建Web应用程序,但是由于万维网的发展方式,并且由于其速度的原因,这些技术并没有真正的时间发展和应对步伐。 许多玩家试图想出不同的和奇特的技术来主要改善用户体验,并帮助开发人员构建更快,更强大的Web应用程序。 其中一些技术在Web开发中发挥了重要的作用,但是在过去的几年里,Java Applet和Microsoft Silverlight的使用量有所下降。 另一方面,许多技术已经从简单的玩具发展到今天的网络生态系统的强大和重要的部分,如JavaScript,Flash和XML。
当今的网络环境使用HTML和CSS来向用户展示数据,并通过JavaScript完成交互。 这些技术被称为“前端”或“客户端”技术。 另一方面,“后端”或“服务器端”技术是指数据存储和处理技术。
2.问题阐述
前端和后端技术一起构建Web应用程序,但由于万维网的发展如此之快,而且由于开发人员需要使用相当多的技术来构建一个Web应用程序,因此他们工作往往难以维护和修复。
开发人员将HTML代码与服务器端编程语言组合在一起,以创建动态网页和应用程序,从而导致代码纠结和不可维护。
另一个问题是由于Web技术越来越多地用于构建各种复杂的应用程序而产生的。 微软采用网络技术来鼓励开发人员为其最新的操作系统Windows 8构建应用程序。另外,还有许多框架帮助Web开发人员编写移动设备应用程序,例如PhoneGap和Appcelerator Titanium。 更重要的是,手机操作系统正在开发中,预计今年晚些时候将使用完全针对开发者API(Mozilla Firefox OS)的网络技术。 由于这些原因,一个Web应用程序通常是由一组专业开发人员创建的,每个开发人员都使用他们喜欢的技术,如用于表示层的HTML和CSS,用于客户端交互的JavaScript,PHP(或ASP,Java,Python,Pearl ,Ruby等)用于服务器端逻辑和MySQL(或Oracle数据库,Microsoft SQL Server等)进行数据存储和管理。
这些专家中的每一个都需要与他们的同事一起工作,以使他们的代码片段适合应用程序的整体设计。 例如,客户端(数据表示)开发人员需要改变HTML和CSS代码,使得他不会破坏驻留在同一文件中的服务器端开发人员的代码。 此外,当数据库开发人员更改应用程序的模式时,服务器端开发人员可能需要更改大量代码才能使应用程序正常工作。
这里需要注意的重要一点是,急需将应用程序中的表示与逻辑和数据存储分开。
有一些应用程序设计范例和模式为这个问题提供了解决方案,但是现在的焦点是MVC模式。
在开展研究时,我们使用的经验是建立具有各种系统和框架的网络应用程序,我们试图找出这些系统的优点和缺点,同时提供我们自己的观点,以便如何改进这些做法。 研究过的框架和系统包括:Symfony,CakePHP,CodeIgniter Zend Framework,Laravel,Fuel PHP,Ruby on Rails和ASP.NET MVC。
3.MVC模式和文献概述
在本节中,我们将回顾这个领域的研究现状,并且看看MVC模式背后的文献,描述模式的主要功能部分。
Trygve Reenskaug在20世纪70年代在施乐公园(Xerox Parc)首次设想了MVC设计模式。 据他介绍,“MVC的根本目的是弥合用户心智模式与计算机中存在的数字模型之间的差距”。
后来,在1988年,Krasner和Pope在他的文章“在Smalltalk-80中使用模型 - 视图控制器用户界面范式的食谱”中详细描述了MVC范例,发表在“面向对象编程杂志”上。
他们强调,如果用模块化来构建应用程序,将会带来巨大的好处。 “尽可能地将功能单元彼此隔离,使得应用程序设计人员更容易理解和修改每个特定单元,而不必知道其他单元的所有信息。”
应用程序分为三个主要类别:主应用程序域的模型,该模型中数据的表示和用户交互。
MVC模式将职责分解为三个主要角色,从而实现更高效的协作。 [3]这些主要角色是开发,设计和集成。
开发角色由负责应用程序逻辑的经验丰富的程序员负责。 他们负责数据查询,验证,处理等等。
设计角色是负责应用程序外观的开发人员。它们显示从第一个角色开发人员处获得的数据。
集成角色收集开发人员负责粘贴前两个角色的工作。
MVC设计模式非常适合Web应用程序的开发,因为它们结合了几种通常分成一组层的技术。 另外,MVC的具体行为可能是向不同类型的用户代理发送特定的视图。 [13]
“用户与MVC应用程序的交互遵循自然循环:用户采取行动,作为响应,应用程序更改其数据模型并向用户传递更新的视图。 然后循环重复。 这对于作为一系列HTTP请求和响应提供的Web应用程序非常方便。
图1 MVC模式
3.1 模型
模型是系统的一部分,用于管理与数据相关的所有任务:验证,会话状态和控制,数据源结构(数据库)。 该模型大大降低了开发人员编写代码的复杂性。
模型层负责应用程序的业务逻辑。 它将封装访问数据(数据库,文件等)的方法,并将使可重用的类库可用。 通常情况下,模型是建立在数据抽象的基础上的,验证和认证。
此外,该模型由定义感兴趣领域的类组成。 属于域的这些对象通常会封装存储在数据库中的数据,但也包含用于处理这些数据并强制执行业务规则的代码。
作为结论,模型主要处理数据访问抽象和验证。 该模型保存与不同数据源交互的方法。
我们相信薄模型方法,它说模型应该尽可能简单,只包含严格地与被建模的现实生活对象相关的数据处理。 Thin Model与胖控制器结合在一起,用于存储应用程序所需的大部分数据处理。 这样,模型在应用程序之间变得高度可重用,并且大部分开发人员的工作都保存在控制器内部。
我们的模型系统给MVC世界带来的新颖性是基于迁移思想的版本控制系统,它不仅跟踪数据结构,还跟踪数据本身。 系统使用xml文件在迁移之间存储数据,使得数据库的版本化过程成为一件容易实现的事情。
3.2 视图
该视图负责图形用户界面管理。 这意味着应用程序内的所有表单,按钮,图形元素和所有其他HTML元素。 也可以使用视图为聚合器或Flash演示文稿生成RSS内容。 通过将应用程序的设计与应用程序的逻辑分离,我们可以大大降低设计者通过更改徽标或表格来更改应用程序界面时出现错误的风险。 与此同时,开发人员的工作大大减少,因为他不再需要查看HTML代码元素,设计元素和图形元素。
视图层通常被称为网页设计或模板。 它控制数据的显示方式以及用户与之交互的方式。 它还提供了从用户收集数据的方法。 主要用于视图的技术是HTML,CSS和JavaScript。
作为一般规则,视图不应该包含属于应用程序逻辑的元素,以便设计人员更容易使用它。 这意味着逻辑块应该保持在最低限度。
现在大多数Web应用程序框架都使用某种模板引擎来利用生成器元素,以便将HTML代码保持在最低限度,并降低输入错误的风险。 这些生成器通常用于制作复杂的网页部分,如表格,表格,列表,菜单等等。 我们在这种情况下确定的问题是,这个想法的所有实现都使用幕后或不透明的部分生成。 这样,前端开发人员只能在生成代码后才能看到生成的代码,几乎无法修改模板。 我们的系统使用特殊的HTML注释来插入和生成基于也是纯HTML文件的模板的部分。 预处理系统使用注释来解释特殊命令以便将数据插入到模板中。 这使得整个过程对于前端开发者来说是非常透明的,他们可以在渲染视图之前看到整个标记。
3.3 控制器
Controller负责事件处理。 这些事件可以由用户与应用程序交互或由系统进程触发。 控制器接受请求并为响应准备数据。 它也负责确定回应的格式。 控制器与模型交互以获取所需的数据并生成视图。 这个过程也被称为动作或动词。当一个请求到达服务器时,MVC框架根据URL将其分发到一个控制器中的一个方法。
Controller绑定所有应用程序逻辑,并将View中的显示与模型中的功能组合在一起。 它负责从视图中检索数据,并为应用程序建立执行路径。 控制器将访问模型功能,它将解释收到的数据,以便它可以被视图显示。 它也负责错误处理。
控制器管理视图和模型之间的关系。 它响应用户请求,与模型交互并决定应该生成和显示哪个视图。
如上所述,我们采用Fat Controller方法,相信所有应用程序特定的数据处理应该在控制器级别进行处理。
我们的控制器系统是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环境中写入资源路径的方式非常相似。 [12]
Web服务器记住这一点,并隐式地在分层文件系统中查找数据。
这种访问资源的方式相对简单直观,但随着Web应用程序复杂性的增加,需要更好的系统。 为了解决这个问题,我们可以配置Web服务器和开发框架,以便以独特的方式解释结果并访问资源。
这些系统被称为URL映射或URL路由系统。 该技术也被称为URL美化,并帮助开发人员建立有序和漂亮的网址数据用户和搜索引擎可以处理得更好。
我们的系统建立在“控制器/动作/参数”范例之上,但
全文共6911字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[16338],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。