平衡的抽象Web-MVC风格:基于Web的应用程序的抽象MVC实现外文翻译资料

 2022-04-30 09:04

英语原文共 16 页,剩余内容已隐藏,支付完成后下载完整资料


平衡的抽象Web-MVC风格:基于Web的应用程序的抽象MVC实现

摘要:Web应用程序的功能和功能正在迅速增长,Web应用程序工程的复杂性和难度也在同步增长。如果这些先进的网络应用程序的架构形式主义得以很好地实现,则可以理解复杂性,从而可以减少困难。模型 - 视图 - 控制器(MVC)被认为是一种格式良好的架构风格,并且已经在各种形式的实现中被广泛用于网络应用工程中。这些MVC实现严重依赖于特定的一组技术和/或其他一些事实;因此,他们没有提供一个抽象的实现用于更广泛的Web应用程序工程。我们提出以更抽象的形式实现MVC,我们认为这将增加高级Web应用程序的实现,从而降低Web应用程序的工程复杂性和难度。我们相信这种实现更适用于更广泛的环境和技术,并且会提升建筑性能,如性能和可修改性。基于此实现,我们为Web应用程序引入了一种基于MVC的架构风格。未来,我们希望进一步改善这一点,以支持丰富的网络应用。

关键词:mvc,软件结构,网络应用

介绍

万维网和互联网已经变得流行起来,网络应用程序已经在信息世界中占据了领域,其中包含正在迅速增长的专用方法,技术和技术(TT)[1]。 随着Web应用程序的不断发展,Web应用程序的需求不断增加[2],直至大型企业级系统[1]。 在过去的十年里,大量的相关TT在更广泛的范围内被引入,以支持Web应用工程。

本文针对Web应用程序开发提出了一种名为Model-View-Controller(MVC)的流行体系结构样式的实现,指出了其使用的优点,针对可用的基于MVC的TT的缺点。 这个实现采用了一种新颖的方法来将MVC引入到Web应用程序开发中,引入了一种新的基于MVC的架构风格,它不依赖于TT,因此是抽象的。

本节讨论本文关注的目标问题,以及动机,然后讨论我们在本研究中使用的方法。 第II部分提供了域的背景,概述了Web应用程序,软件体系结构和MVC,然后详细讨论了经典的MVC及其在桌面应用程序开发中的应用seciton回顾了网络中与MVC采用相关的可用工作,重点介绍了可用于网络的MVC实现的缺点,这些实现应该由本文介绍的MVC实现解决。 第四部分讨论了MVC概念向Web应用程序开发的抽象,然后第五部分基于所讨论的Web抽象MVC版本推导了所提出的架构风格。 第六部分对引入的风格进行评估,最后第七部分对论文进行总结,指出了局限性和未来的工作。

问题和动机

Web应用程序已经发展成为更先进的系统,其复杂性已经显着增长[1],其中不同类型的组件在现代Web应用程序中以各种方式集成,因此导致难以理解其架构形式。 该设置以负面方式影响基于Web的系统的工程过程。 为了解决相关问题并支持网络工程,已经引入了许多概念和TT。 这些支持工件带有额外的学习曲线及其优点和缺点。

但是,这些高级Web应用程序的基础仍然放在客户端 - 服务器(C-S)模型上,这是任何Web应用程序的基本架构形式[3]。 因此,我们假设在Web应用程序中有共同的特征 - 主要与建筑形式主义相关 - 无论规模和开发中使用的TT是什么。 此外,如果这种常见的建筑形式主义被很好地识别和指定,它可能有助于增加Web应用程序的实现,从而有助于降低高级Web应用程序开发中的复杂性和困难。

已经有可用的架构风格,它们通过增加Web应用程序形式化的实现来帮助降低复杂性;但是,我们注意到它们严重依赖于一些特定的TT,因此不是抽象的。本文使用术语“抽象”来表示来自TT的概念的独立性。通过一个例子可以很好地解释术语“抽象”的概念。诸如面向对象编程(OOP)和C-S风格的概念可以作为抽象概念给出,它们独立于任何TT。一旦理解了这个概念,就可以很容易地将它们用于开发,而不管使用何种TT。 TT独立性提供了以下优势:概念抽象的共同特征,增加的实现,知识和经验分享,较低的学习曲线,并协助更好的TT选择和采用[4]。有关TT独立性及其利弊的深入讨论故意不在本文的讨论范围之内。

本文中介绍的架构风格 - 基于为Web应用程序提供的MVC实现 - 是抽象的,因此独立于TT。 在这种风格中,我们尝试以抽象的方式增加Web应用程序中的可见性(组件的分离),并基于MVC的建议实现增加Web应用程序形式化的实现。 在设计提议的建筑风格时,我们致力于确定基本的TTs,使其更加抽象,因此TTs是独立的。 我们认为这种风格所提供的抽象将会使它更加灵活,因此可以在更广泛的环境中提供网页开发的简单应用,同时还可以提供非常令人满意的架构属性,如性能,可修改性和可伸缩性

B.方法

进行了一项文献调查,以获取有关Web应用程序,软件体系结构和体系结构样式,概念抽象和TT独立性,MVC以及用于开发基于MVC的Web应用程序的TT的领域知识。

有人指出,缺乏关于TT独立性和概念抽象的文献。 因此,通过将可用TT用于基于MVC的Web开发 - 以获取经验证据 - 来获得相关知识 - 进行了一系列实验。 这些实验基于原型,并以增量方式进行。 文献中学到的事实在早期迭代中进行了测试,以确定瓶颈和问题,然后在后面的迭代中测试所发现问题的解决方案。 确定的解决方案不断完善,以验证它们不会与后面迭代中发现的工件发生冲突。

为了开发原型的网页,使用了HTML5和CSS3; 客户端组件开发使用JS和jQuery完成; 用于开发服务器端组件PHP。 Apache被用作Web服务器,MySQL被用于数据库开发,这些开发是利用XAMPP工具在本地托管的。

通过实验获得的经验证据可以被看作是本研究的支柱,并被用来制定引入方式的要求并推导出来。 此外,研究的一些部分在研究会议上提出,并收到反馈意见。

II。 背景

在本节中,将给出Web应用程序,软件体系结构,体系结构样式及其评估以及MVC概述的概述。 然后讨论了经典MVC的背景及其在桌面应用程序开发中的应用,为本文的其余部分奠定了基础。

概观

本节概述了Web应用程序,软件体系结构,体系结构样式以及它们如何进行评估,以及MVC概述,以便提供本文所涉及的域的基础知识。

Web应用程序

网络为集中控制和管理的多用户系统提供了一个平台。关于网络,Web应用程序和其他基于Web的系统的讨论有其自己的更大空间。在本节中,我们将重点介绍在浏览器上运行的Web应用程序的基础知识,提供其组件和开发TT的概述。

Web应用程序的基本架构模型是C-S架构,它包含两个独立的节点,客户端和服务器。 CS模型 - 换句话说,两层体系结构 - 是集中控制和管理Web应用程序的关键[5],但它使得Web应用程序的组件依赖于位置/分区(组件取决于客户端或服务器节点),因此不能在单个地址空间中运行[6]。 Web应用程序使用请求 - 响应模型在客户端和服务器节点之间以及在其他节点(如果可用)之间通过HTTP协议[3]。

由于Web应用程序中有多个组件,并且它们运行在多个位置和环境中(主要 - 至少 - 在客户端和服务器节点中) - 这些组件在平台上彼此不同 - 这些组件在技术上依赖性很强。例如,在客户端,对于Web浏览器平台,对于图形用户界面(GUI)组件,使用诸如HTML和CSS的语言,用于客户端应用程序组件开发JavaScript(JS)以及各种基于JS的库;而对于服务器端组件,则使用像PHP或JAVA这样的语言,以及诸如服务器,平台,框架等相关的TT。

现在的Web应用程序是非常先进的,它们通常与定制的导航拓扑结合在一起,它们支持在其底层企业应用程序中触发事务[7]。这些Web应用程序的规模和功能在短时间内得到了增长。所有这些事实 - 位置和TTs依赖关系,复杂结构,可变大小和更高能力 - 共同使Web应用程序成为当今非常先进和复杂的实体。因此,实现它们的抽象形式主义对于无耻的发展至关重要。

软件架构和建筑风格

软件体系结构在运行时提供系统内部组件及其关系的高级抽象视图[8]。 体系结构可以被看作是软件系统的基础,并且它提供了一个强大的结构和许多优点,用于执行平稳的工程操作[9]。 Fielding [8]将系统中的架构元素分为三种主要类型:处理组件,通信连接器组件和数据元素; 这些元素的集成关系称为配置。

建筑模式 - 换句话说,建筑风格 - 提供了获取软件开发成功解决方案知识的手段。 根据菲尔丁[8],“建筑风格封装了有关建筑元素的重要决定,并强调了对元素及其关系的重要约束。”可以通过向null样式添加约束来设计建筑样式 - 它表示没有约束的样式 - 或现有的风格[8]。 在设计风格时,抽象建筑元素及其配置的识别,足够好地分离组件以降低耦合至关重要。 此外,约束添加可以对齐到期望的一组架构属性,由最终结果来满足。

本文重点介绍以下的建筑属性[8]。

1:简单性 - 采用“分离关注点”原则[10],通过适当的模块化来有效地分配组件内的功能。

2:可修改性 - 能够容忍在初始工程和部署后阶段对应用程序体系结构所做的更改。这在下面的四个小节中描述。再次,可修改性也可以通过适当的模块化来增加。

2.1:可演化性 - 可以改变组件的程度而不会对其他组件产生负面影响。

2.2:可扩展性 - 可以向系统添加功能,而不会对其他功能产生负面影响。

2.3:可定制性 - 能够临时专门化架构元素的行为,以便它可以以不同的方式执行服务。例如:如果某个组件可以针对一个客户端进行更改,则该组件是可自定义的,而不会对获得相同组件服务的其他客户端产生负面影响。

2.4:可配置性 - 这涉及到扩展性和可重用性,它涉及组件的后部署修改或组件配置。

3:可重用性 - 应用程序体系结构的属性,如果其组件,连接器或数据元素可在其他应用程序中重用 - 无需修改。 在架构风格中引发可重用性的主要机制是通过减少组件之间的耦合(身份知识)和限制组件接口的通用性。 这也可以通过系统的高效模块化来获得。

4:性能 - 通过适当的模块化获得客户端处理能力的最大利用率,可以提高性能。

5:可扩展性 - 通过有效的模块化扩展,为大量客户提供服务。 另外考虑利用WS的能力,以解决C10k可伸缩性问题[11]。

诸如SAAM [12]和ATAM [13]等专用方法被用来客观评估架构风格,而不实施它们。 本研究使用了Fielding [8]指定的方法,该方法使用派生树来指示应用约束所引发的架构属性。

MVC

MVC可以被看作是可用的架构模式之一,这是一种流行和广泛使用的模式[14]。 20世纪70年代,这家名为Xerox Parc的公司引入了MVC概念,其开发环境称为Smalltalk-80。 MVC可以被认为是使用协议来定义组件,而不是使用具体的实现[15]。 MVC模式优雅,简单,与传统的编程方法不同[16]。 目前,在企业软件开发[14] [17]中,MVC被广泛接受为设计模式和架构风格,在桌面和基于网络的系统中,使用面向对象的范例进行设计。

Selfa等人 讨论了MVC参与的一些优势,比如:视图提供的耦合少,内聚力高,灵活性和灵活性更大,设计更清晰,维护方便[14]。 Prakash等人。 解释MVC的好处,例如“由于模型和控制器在MVC中完全分离,并且它使得用户类别或平台更加简单,所以”传统程序的迁移变得容易“[18]。

B.经典的MVC

本节讨论Smalltalk引入的MVC原始版本的特性,以理解其制定背后的抽象概念。

MVC为软件组件提供了一种基于职责的模块化,明确地针对具有GUI的软件系统[15]。软件系统中组件的模块化提供了一些好处。例如,它有助于以低耦合尽可能地隔离功能单元,这使得应用程序设计人员和开发人员更容易理解和修改每个特定组件,而无需了解其他组件的所有信息[19 ]。此外,模块化有助于系统的概念开发,并且还允许组件的可重用性[19]。

MVC中的模块化将代表底层域的逻辑的各个部分从信息呈现给用户的方式以及用户与系统交互的方式中分离出来,使用三个模块,即模型,视图和控制器[19]。这种模块分离使不同的开发团队能够独立地在每个模块上串联或并联工作[20]。而且,这种分离有助于降低模块之间的耦合度,从而降低架构设计的复杂性,从而提高灵活性和代码重用性[21]。图1显示了由Krasner等人提出的经典MVC。 [19]。

1)MVC模块

本节讨论由施乐Parc在Smalltalk-80中引入的MVC范例模块,指出了它们的基本原理。

模型:表示该领域知识的模块称为模型。 该模型是由类开发的,它们负责应用领域特定的信息[19]。 应该指出,该模型包含和管理域的行为和数据[16]。

视图:视图显示应用程序的状态,该状态是作为GUI窗口开发的; 并且Views可以被视为Model [19]的用户版本。

控制器:控制器是相关的视图,模型和输入设备[22]之间的中间件,它还提供了相关视图和模型[19]之间的接口。 控制器通过键盘或鼠标将用户输入解释为模型或/和视图的命令以适当更改[16]。 我们可以将Controller想象成事件处理机制,就像现代事件驱动的编程框架(如JAVA)一样,该框架内置事件循环,因此开发人员必须仅为事件处理程序编写代码。

2)模块之间的通信

该视图负责在MVC黑社会中建立相互通信[16]。每个视图与一个独特的控制器密切相关,反之亦然,并且它们保持紧密耦合[16]。视图和控制器类有一些他们必须回复的消息[15]。由于视图和控制器明确意味着协同工作,视图与其关联控制器之间的通信非常简单[16]。

模块对其他模块存在的知识如下:视图和控制器需要明确地了解他们的模型,但模型不需要知道他们的视图或控制器[19]。视图注册自己依赖于他们的模型,并响应模型的更新更新[15]

全文共26439字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[12943],资料为PDF文档或Word文档,PDF文档可免费转换为Word

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

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