基于前、后控制器的网络应用MVC体系结构外文翻译资料

 2022-12-19 17:43:51

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


2016年第五届国际信息学、电子与视觉会议(ICIEV)

基于前、后控制器的网络应用MVC体系结构

Khaliluzzaman

计算机科学与工程系

吉大港国际伊斯兰大学

孟加拉国吉大港-4203

Iftekher

计算机科学与工程系

吉大港国际伊斯兰大学

孟加拉国吉大港-4203

摘要: MVC设计模式是用于构建交互式软件系统。由于它是独立于分区的,开发人员鼓励对MVC系统进行分区以提高性能。为此,本文提出了一种基于MVC架构的重组框架。作为一个分区组件,本文介绍了一个使用一些重要模块的预控器。其中之一是注入依赖项以自动提供控制器所需的依赖项。另一个是模块化,用于重用当前应用程序中的现有应用程序模块,该应用程序是用相同的框架构建的。此外,请求过滤器用于为控制器提供额外的安全层。除此之外,Post控制器还用于调度已注册的服务并在网页上打印HTML视图。将该框架与现有的两个基于MVC的Web应用框架进行了比较,并给出了验证结果。

关键词:MVC;前控制器;注入依赖项;模块化;请求过滤器;后控制器

  1. 引言

以前,大多数Web应用程序都是使用静态HTML页面构建的。不同的业务组织使用静态网页构建其网站,以便与所有业务合作伙伴共享其信息。静态HTML页面很难维护需要定期更改的内容。业务组织需要动态的方式来定期更改其HTML页面内容。然后,他们开始使用嵌入到静态HTML页面中的代码来创建动态网页。这种方式的主要问题是嵌入到HTML页面中的所有业务逻辑。对小企业组织有好处。但是,对于大型企业组织来说,这不是一个好的解决方案。引入MVC(模型/视图/控制器)体系结构是因为业务需要新的体系结构来将业务逻辑与表示层分离。

由于MVC架构将业务逻辑与表示层隔离,并支持关注点分离,因此它获得了更多的流行。该体系结构提供了三个部分:模型、视图和控制器。该模型负责管理业务组织需要的各种业务逻辑。模型响应请求来自视图,它也响应来自控制器的更新请求。视图表示MVC体系结构的表示层。视图基本上绑定到模型。它显示所有的UI元素,并将模型数据相应地放置在UI元素中。控制器用于在模型和视图之间创建链接。它负责响应用户输入并执行与数据模型对象的交互。控制器接收来自用户的请求。它验证输入,然后执行修改数据模型状态的业务操作。现在,基于Web应用程序的一天MVC体系结构正在成长。大多数复杂的Web应用程序都是用这种体系结构构建的。因此,现在实现这种Web应用程序比以前更加困难和耗时。

本节描述了已针对各种应用程序实现和测试的现有方法。在[1]中开发了一个轻量级MVC框架。这个框架基于两个现有的框架,即SpringMVC和MyBatis。该框架降低了开发的复杂性,提高了效率。然而,控制器的复杂性并没有得到改善。中提出了一个扩展的Web应用程序开发框架(xwadf)[2]。该框架通过在MVC的阻塞中使用设计模式来提高Web应用程序的性能。在[3]中,作者重点讨论了如何设计连接器来解释分布式MVC系统中的依赖关系。

在[4]中提出了一种灵活的Web应用方法。该方法允许开发人员在模型-视图-控制器设计模式中设计分区编程模型和实现。这种模式以分区独立的方式工作。在[5]中,提出了一个基于模型视图控制器的重新设计框架,它支持JavaTM2平台,企业版(J2EE)。[6]中提出了一种教育工具。在该方法中,通过增强用户建模服务器,使用了基于Web的学习环境。在相同的教育场景中,在[7]中引入了一个研究项目。在该项目中,MVC用于满足信息需求。在[8]中,作者使用MVC方法来允许教育工具中的功能扩展。

本文提出了一种将前控制器和后控制器纳入现有MVC体系结构中的框架,以实现控制器功能的顺利实现。为了实现这一目标,框架需要分为五个主要部分,其中传统的MVC设计模式有三个部分。该框架包括:(1)前控制器,(2)控制器,(3)模型,(4)视图和(5)后控制器。

pre控制器有九个主要部分:(1)接收用户请求的入口点;(2)创建应用程序类实例的应用程序;(3)启动所有应用程序的应用程序组件所需组件,(4)引导服务以模块化方式启动所有注册模块组件,(5)请求组件检查用户请求的方法类型,(6)URL生成器从用户请求生成URL,(7)将组件路由到触发器控制器,并根据用户请求执行操作,(8)请求过滤器验证用户请求,(9)依赖注入器自动将控制器依赖项注入到控制器类中。

该模型存储了根据控制器命令检索到的各种业务逻辑和数据。该视图基于从控制器类提供的模型数据生成HTML输出。如果模型数据被更改,视图中显示的数据将被更改。控制器作为模型和视图之间的附件工作。控制器从模型中提取数据,并将这些数据提供给视图以生成HTML输出。并将此HTML输出发送到预控制器的路由组件。Post控制器有两个主要部分:(1)调度服务是触发注册模块的调度方法;(2)响应组件是在网页上打印HTML输出。

本文的其余部分组织如下。第二节介绍了传统的MVC方法。在下一节中,将用处理示例解释所提出的框架。框架的性能在第四节中进行了说明。本文在第五节中进行了总结。

  1. 传统的MVC方法

MVC方法建议将单个问题划分为三个部分:模型、视图和控制器,如图1所示。各种业务逻辑都被保存在模型中。视图只负责呈现输出。控制器充当模型和视图之间的粘合剂。模型、视图和控制器都是自依赖的。控制器接收用户请求,然后控制器与模型对话,发送业务逻辑实现数据。之后,该数据发送到视图以呈现输出。所有类型的用户交互只发生在控制器上。

图1 传统的MVC方法

  1. Controller

控制器是模型和视图之间的粘合剂。它接受用户请求并调用模型来处理用户需要的所有数据。这些数据发送到视图,根据用户的操作显示输出。

  1. Model

该模型包含各种业务逻辑和数据。它还负责与数据库进行对话,并从业务逻辑或用户需要的数据库中获取数据。在模型中完成的各种计算工作。

  1. View

视图是MVC方法的表示层。它从主要由控制器提供的模型中获取数据,并使用此数据为用户的操作进行输出。视图还可以有一个助手,该助手将检索与呈现相关的信息,而不是与当前请求基本上相关的信息。

  1. 与传统MVC相关的问题

由于目前传统的MVC方法不提供访问控制器的请求过滤。任何人都可以访问控制器,而不需要任何类型的请求过滤。然而,这个方法从未描述任何关于依赖注入和模块化方法来添加扩展的内容。控制器可能有许多依赖项。如果我们手动注入控制器的所有依赖项,那么当控制器具有许多依赖项和嵌套依赖项时,它会使控制器更加复杂。

  1. 拟议框架

在本节中,我们将通过处理示例详细描述所提议的框架。该框架分为五大部分,传统的MVC框架分为三部分。该框架包括:(1)前控制器,(2)控制器,(3)模型,(4)视图和(5)后控制器。拟议框架如图2所示。

图2 拟议框架的工作流程图

  1. Pre-Controller

预控制器接受用户请求并加载应用程序需要的所有组件和注册模块。它还负责验证用户请求并注入控制器需要的所有依赖项。

预控制器的入口点接受用户请求,然后创建应用程序类的实例,应用程序类加载应用程序类需要的所有组件。应用程序类还加载向应用程序注册的所有模块。然后是应用程序类调用请求组件的请求类型检查器以获取用户请求的方法类型。之后,应用程序类调用URL生成器组件的uri方法来获取用户请求的uri。将URI和请求类型发送到路由组件的调度方法。路由组件首先尝试将URI与路由组件的所有注册路由匹配。如果路由组件找到任何匹配项,则路由组件调用filter-request方法检查所有注册的筛选器以访问URI。如果用户请求通过请求过滤器进行验证,那么路由组件将调用invoke方法。之后,invoke方法首先递归地创建控制器类的所有依赖项的实例,并通过控制器类的构造函数方法将所有依赖项注入控制器类。最后,呼叫为URI注册的控制器类的方法。

每个控制器需要十个步骤来处理用户请求。这些步骤是:

步骤1:用户发送一个从URI获取数据的请求,这个请求被入口点接受。

步骤2:入口点创建应用程序类的实例。

步骤3:应用程序类加载模块的所有应用程序组件、模块注册类和注册路由。

步骤4:请求组件检查用户请求的请求方法类型。

步骤5:URL生成器组件根据用户请求生成URI。

步骤6:方法类型和生成的URI用注册的方法发送到路由组件的调度方法触发控制器。

步骤7:如果路由组件从所有注册的路由中找到任何与URI匹配的路由,那么用户请求将发送到请求过滤器以检查用户请求。如果“路由不匹配”,路由组件将向用户发送“未找到路由”消息。

步骤8:请求筛选器触发已注册的URI筛选器。

步骤9:如果请求过滤器验证了请求,那么之后,该请求过滤器将“空”值返回到路由组件的调度方法。如果请求未验证,则用户的请求将终止。

步骤10:路由调度员将“controller@action”解析为“controller”作为控制器类,“action”解析为“controller”的操作方法。路由调度器执行“controller”类的“action”方法。在调用注册方法之前,路由组件通过“controller”类的构造函数方法注入“controller”类的所有依赖项。等待来自控制器的输出。当它从控制器得到输出时,输出被发送到应用程序类。

为了演示预控制器的所有步骤,需要分别在图3和图4中显示样本路由注册和请求过滤器类。

图3 路由注册的处理示例

图4 请求过滤器的处理示例

根据上面提到的步骤1,用户发送一个请求以“/”的形式从URI获取数据,这个请求被入口点接受。然后,如下面所示创建一个应用程序类实例,如步骤2所述。

$app=new sunapplication(realpath(uu dir_uuue/../);

要加载应用程序类的所有组件和所有注册的模块,将调用类引导方法。它只加载所有必需的类并返回空值。入口点、应用类、应用组件和引导服务的处理框图分别如图5(a)、图5(b)、图5(c)和图5(d)所示。

图5 处理a)入口点b)应用程序类c)应用程序组件和d)引导服务的框图

在下一步中,检查用户请求方法类型并返回“get”作为方法类型。在步骤5中,只需按用户请求的URI返回“/”。根据步骤6,方法类型“get”和用户请求的uri“/”发送到路由组件的调度方法,并等待来自控制器或请求过滤器的结果值。请求组件、URL生成器、路由组件和请求过滤器的处理框图分别如图6(a)、6(b)、6(c)和6(d)所示。

图6 处理a)请求组件b)URL合成器c)路由组件和d)请求过滤器的框图

在步骤7中,用户请求从路由组件传递到请求筛选器以验证用户请求。之后,请求过滤器触发“auth”请求过滤器,如图4所示。如果用户经过身份验证,则用户请求返回值为空的路由组件的调度方法。否则,请求将被终止。

在预控制器的最后一步中,路由调度程序将“pagecontroller@index”解析为“pagecontroller”,将“index”解析为“controller”的操作方法。路由调度器执行“controller”类的“index”方法。在调用“index”方法之前,路由组件将“pagecontroller”类的“page”模型类依赖项注入到“pagecontroller”类的构造函数方法中。现在等待输出的路由组件来自“pagecontroller”。当它从“pagecontroller”得到输出时,将输出发送到应用程序类。处理框图如图7所示。

图7 处理框图a)请求过滤器检查,b)依赖注入

  1. Controller

控制器从路由组件接收过滤后的用户请求,并调用模型来处理用户需要的所有数据。这些数据发送到视图以生成HTML输出。之后,生成的HTML输出将发送到路由组件以在网页上显示输出。

控制器需要三个步骤来处理从路由组件提供的过滤用户请求。这些步骤是:

步骤1:“action”方法与模型对话并从模型中提取数据。

步骤2:“action”方法将来自具有模板视图文件的模型的数据提供给视图类的呈现方法以生成HTML视图。

步骤3:最后,控制器类将HTML视图返回到路由组件。

图8中描述的示例控制器类代码演示了控制器的所有步骤。

图8 控制器的处理示例

根据控制器功能程序的步骤1,控制器通过调用“pagecontroller”的“index”方法来执行该操作,以根据应用需要访问模型。“index”方法调用“page”模型类的“name”方法从“page”模型类中获取数据,如图10所示。可以访问“pagecontroller”类的“$page”属性作为“page”模型类的实例,而无需创建“page”模型类的任何实例。由于依赖注入器将“$page”属性的“page”模型类实例注入到“pagecontroller”类的构造函数方法中。在下一步中,“page”模型将变量名指定为“pagename”,将“home”指定为“pagename”变量的值。

现在,这个变量名及其值与一个示例视图模板一起发送到视图类的呈现方法

剩余内容已隐藏,支付完成后下载完整资料


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

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

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