英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料
设计MVC模型快速进行web应用开发
作者:Dragos-Paul Pop;Adam Altar
作者单位:Romanian-American University, 1b Expozitiei Blvd., Bucharest, 012101, Romania
刊名:Procedia Engineering
日期:2014
卷号:Vol.69
页码:1172-1179
摘要
在本文中,我们提出了一个快速开发网络应用的模型。该模型是基于MVC,有多种组件,如:安全组件、表单的生成和验证组件、数据库访问组件和路由。这个模型是使用PHP编程语言实现的,但它可以在其他开发语言和环境中使用相同的概念。降低开发和维护时间,提高代码的可维护性是本研究的主要目标,。
关键词:模型、视图、控制、MVC、Web 应用、设计模式
1.简介
从网络的出现到现在,网络应用程序的开发已经开始很长一段时间了。无数的技术和编程语言现在被用来构建网络应用程序,但是因为网络技术的不断突破和发展,使这些技术没有时间快速发展来跟上网络技术前进的步伐。许多人都尝试采用不同的技术帮助开发人员构建更快、更强大的网络应用程序以提高用户的体验。其中有些技术在网络应用开发中已经扮演了重要的角色,但是他们的重要性却在逐渐减弱,例如:java Applets和Microsoft Silverlight。另一方面,许多技术已经从简单的工具到今天成为网络生态系统中强大的重要的一部分,例如:JavaScript、Flash和XML。
当今的网络应用,使用HTML和CSS进行数据展示,用户之间的交互是通过JavaScript。
这些技术被称为“前端”或“客户端”技术。“后端”或“服务器端”技术是指数据存储和处理技术。
2.问题
前端技术和后端技术被一起用来构建Web应用程序,但由于网络技术的飞速发展,因为开发人员为了开发一个小的Web项目而使用大量的技术,这样的应用往往是难以修改和维护。
开发人员结合HTML代码与服务器端编程语言来创建动态Web页面和应用程序,这导致项目高度耦合,代码难以维护。
另一个问题是,网络技术越来越多地用于构建各种复杂的应用程序。Microsoft embraces网络技术鼓励开发者为其最新的操作系统,Windows 8开发能够兼容的网络应用。另外,很多框架存在,可以帮助Web开发者编写移动设备应用,如PhoneGap和Appcelerator Titanium。甚至,一个手机操作系统正在开发中,预计今年晚些时候,就可以使用Web技术来开发手机API(Mozilla Firefox OS)。由于这些原因,Web应用程序通常是由整个团队的专业开发人员创建的,每个人都可以用自己喜欢的技术进行开发。例如用HTML和CSS开发表现层,用 JavaScript实现与客户端交互,用PHP(或ASP、java、python、Pearl, Ruby,等)实现服务器端逻辑,用MySQL(或Oracle数据库,SQL Server等)进行数据存储。
每一位开发者都需要与同事合作,这样他们的代码片段适合于应用程序的总体设计。例如,客户端(数据展示)开发者需要这样一种开发方式,他不打破服务器端开发者的代码,只在同一文件中修改HTML和CSS代码。此外,当数据库开发人员更改应用程序的模式时,服务器端开发人员可能需要更改许多代码以使应用程序工作。
这里需要注意的是,在应用程序中,有一个需要从逻辑和数据存储中分离呈现的需求。
有一些应用程序的设计模式中,解决了这个问题。如今,最常用的是MVC模式。
在进行研究时,我们已经用我们的经验去建立网络应用程序与各种系统和框架,我们试图找出这些系统的长处和短处,同时提供我们自己的看法,有哪些设计可以提高。研究框架和系统包括:Symfony、CakePHP,CodeIgniter Zend Framework,laravel,Fuel PHP,Ruby on Rails和ASP.NET MVC。
3.概述MVC模式和文献综述
在这一节中我们将回顾这一领域的研究现状,从描述MVC模式的文献中,了解该模式的主要部分。
MVC设计模式是由Trygve Reenskaug在上世纪70年代在Xerox Parc先设想出来的。据他介绍,“MVC模式的基本目的是弥补人类用户的心理模型,在计算机上存在的数字模型之间的差距”。
后来,在1988,Krasner and Pope在他们发表在面向对象程序设计杂志上的文章“使用模型-视图-控制器的用户界面范式在Smalltalk-80”中对MVC模式进行了详细的描述。
他们强调,建立在模块化基础上的应用程序有很多的好处。
“彼此分离的功能单元,使应用程序设计人员更容易理解和修改每个特定的单元,而不必知道其他单元。”
一个应用程序分为三个主要类别:应用的模型、数据的存取、以及用户交互。
MVC模式将这些分为三个主要的角色,从而可以更有效地合作。这些主要的角色是开发、设计和整合。
由经验丰富的程序员,负责应用程序的逻辑的设计开发。他们关心的时数据查询,验证,处理等。
设计的角色是指负责应用程序的外观和用户感受的开发人员。它们显示的数据,该数据是由第一个角色中的开发人员负责处理的。
整合的作用是收集开发商的需求,整合前2个角色。
MVC是一个很好的适合Web应用开发的设计模式,因为他们把几个技术通常分为几个层。另外,MVC的具体行为可以发送特定的请求,不同类型的对象进行代理。
“用户与MVC应用程序的交互遵循自然周期:用户发出请求,并响应应用程序改变它的数据模型,提供了一个视图给用户,然后循环重复。这是一个非常适合Web应用程序的HTTP请求和响应交付流程。”
3.1.模型层
模型是管理与数据相关的所有请求的一部分:验证、交互和控制、数据结构(数据库)。该模型大大降低了代码的复杂性和开发人员需要编写的代码量。
模型层负责应用程序的业务逻辑。它封装访问数据(数据库、文件等)的方法,并保证这些方法可重用。通常一个模型是数据库抽象之上。
此外,该模型是定义成域。属于域的这些对象通常包含数据库中存储的数据,还包括用于处理此数据和执行业务逻辑的代码。
总的来说,模型层主要用来处理数据访问。模型层具有不同进行数据交互的方法。
我们相信薄模型的方法,它说,一个模型应该尽可能简单,只包含数据处理,是严格的现实生活的对象。薄模型与一个脂肪控制器,它包含应用程序所需的数据处理方法。这种方式,模型成为高度可重用的应用程序并且大部分的开发人员的工作是保持内部控制。
3.2.视图层
视图层负责图形用户界面管理。这包括着所有的样式、按钮、图形元素和其他所有的HTML元素内的应用。视图层也可用于生成RSS内容聚合器或Flash演示。通过将应用程序的设计与应用程序的逻辑相分离,我们大大地减少了当设计者决定通过改变一个标志或一个表来改变该应用程序界面时出现的错误的风险。在同一时间,开发商的工作大大减少,因为他不需要看到HTML代码,设计元素和图形元素。
视图层通常可以称为网页设计或模板。它控制了数据的显示方式,以及用户如何与它进行交互。它还提供了收集来自用户的数据的方式。这主要用于视图技术HTML、CSS和JavaScript。
通常来说,视图层不应该包含属于应用程序逻辑的元素,以便使设计器更容易与它一起工作。这意味着逻辑块在视图层应该劲量减少。
如今,大多数Web应用程序框架使用某种类型的模板,尽量保证少用HTML代码,这样减少了发生错误的风险。这些组件通常用来做复杂的网络部分,如表格,列表,菜单等。在这种情况下会发生的问题主要是由后台大妈不透明造成的。这样,前端开发人员只能在生成代码后才能看到结果,几乎没有修改模板的方法。本系统采用特殊的HTML注释插入和生成基于模板的HTML文件。预处理系统使用注释来解释特殊命令,以便将数据插入到模板中。这使得整个过程非常透明。前端开发人员可以看到视图层的整个内容。
3.3.控制层
控制层负责事件处理。这些事件可以由用户与应用程序或系统进程交互触发。控制层接受请求并准备接收数据。它也负责控制建立该响应的格式。控制层与模型层进行交互,以便检索所需的数据,并生成视图层。这个过程也被称为一个动作。当一个请求到达服务器,MVC框架将它在控制层根据URL转发给相应的方法。
控制层结合了所有的应用程序逻辑,将其与模型中的功能相结合,并将其显示在视图中。它负责与数据检索的视图,并建立了应用程序的执行路径。控制器将访问模型层的功能,它将解释接收到的数据,以便它可以显示在视图层。它也负责错误处理。
控制层管理视图层和模型层之间的关系。它对用户请求进行响应,与模型层进行交互,并决定应该生成和显示哪个页面。
如上所述,我们接受Fat Controller的方法,认为所有应用程序特定的数据处理应在控制层进行。
我们的控制层支持JSON(P),用于请求和响应文本和XML数据格式。
4.数据库抽象
在面向对象的编程应用程序是建立对象。这些对象反映了现实生活中的对象,它们包含属性和方法。在应用中广泛使用的数据存储的关系模型,使用表来存储数据,使用数据操作语言来与数据交互。一些数据库管理系统具有面向对象的功能,但它们不能完全兼容。很明显的,从现在开始,这2个体系结构被广泛使用很长一段时间。此外,关系模型和面向对象程序设计都在一起使用,大多数的时间来构建应用程序的每一个模块。但这两者的技术结合起来是远远没有达到完美的程度。用于此失配的术语是“对象-关系阻抗失配”。[ 7 ]
这种不匹配背后的原因是,这2种技术依赖于不同的概念。面向对象的程序设计依赖于编程概念,而关系模型遵循数学原理。
对象-关系映射系统的开发完全解决这个问题。
对象关系映射(ORM)系统是一个工具,提供了一种方法和一种保证面向对象的系统安全的存储数据的方式。
一个ORM系统解决了开发人员了解数据库的结构或图式的担心。数据访问是使用一个概念模型,反映了开发人员的业务对象。
总之,我们可以说,对象-关系映射系统提供了一种使用编程语言来进行与数据库交互的方法。允许开发者采用面向对象变成的方式来进行数据库访问。
一个MVC平台必须提供给开发者如何用数据库管理系统来存储和检索数据的交互方式。大多数时候,这是一个集成的ORM系统。
因为在MVC体系结构中,ORM系统是隐藏在模型层与数据交互层之后。基本上,每个模型是连接到ORM系统和利用系统进行交互的数据。但开发商可以访问的ORM系统资源而不需要使用模型。
我们的ORM系统支持多对象之间的各种关系和有一个最大的深度级别设置为对象链接。
此外,我们提供了一个选项,以保持某些数据集在内存和跳过数据库查询,减少响应时间。
至于NoSQL数据存储方面,我们支持一个接口来访问一个这样的系统。此接口是ORM系统的一部分。
5.安全
网络应用程序的在用户环境发生的漏洞是被攻击的主要原因。在构建网络应用程序时,开发人员需要注意很多事情。
安全风险可以分为几类:11
用户输入验证:缓冲区溢出、跨站脚本、SQL注入、规范化;
认证:网络嗅探,蛮力攻击、数据字典攻击、Cookie伪造,身份盗窃;
授权:访问权限的错误,私人数据显示、数据修改、跟踪攻击;
配置管理:未经授权的访问管理界面,未经授权的访问配置区,访问配置数据存储为文本,缺乏行动记录;
重要的信息:在数据库中访问合理的数据,网络监听,数据改变;
会话管理:会话窃取,会话改变,第三方监听;
加密:弱安全密钥,弱加密;
参数操作:查询字符串,表单域,Cookie和HTTP头信息操纵;
异常管理:拒绝服务攻击;
开发商需要防范这些类型的攻击,和安全相关的部分需要在MVC架构的每一层处理。
我们的系统方案具有CSRF攻击的防范,设计了一个简单的认证模式,复杂的基于角色的安全系统和高度可定制的访问控制列表资源。
6.路由
HTTP协议处理URL的书写方式和资源路径写在UNIX环境下的方式非常类似。
网络服务器承担这一职责,并在一个分层的文件系统中的数据进行隐式查找。
访问资源的方式相对简单和直观,但随着网络应用程序的复杂性的增长,需要一个更好的系统出现。为了解决这个问题,我们可以配置网络服务器和开发框架,以这样的方式解释结果和访问资源。
这些系统被称为网址映射或网址路由系统。该技术也被称为URL美化,帮助开发人员构建有序和漂亮的URL数据用户和搜索引擎可以更好的处理。
我们的系统是建立在“控制/行动/参数”的范式,但它也允许开发者自己配置静态路由。
访问控制的目的是减少不必要的处理时间。
7.快速成型
在网络应用程序开发的世界中,很多应用程序似乎被多次使用。例如,表单是一种工具,通常使用。相似的还有表和列表。但是,从零开始建造这样的元素是相当困难的,因为这涉及到大量复杂的标记。
每个系统可以受益于快速成型模块,不仅可以快速生成这些工具,也提供了方法来验证数据。
这样的工具是非常有用的,当结合ORM系统之后,想建立CRUD系统,只需要用很少的几行代码。
正如上面提到的,我们的系统是基于一个灵活的,完全透明的模板引擎,这使得后端和前端开发人员都能受益。
8.概述系统设计
我们的平台建议将上述
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[28796],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。