在JAVA中为Web开发制定MVC框架外文翻译资料
2022-12-18 15:38:58
英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
在JAVA中为Web开发制定MVC框架
Aditya Singh, Piyush Chawla, Karan Singh, Dr. Ashutosh Kumar Singh
摘要:传统Web开发方法的刚性使得维护和扩展Web应用程序变得困难。MVC(模型、视图和控制器)设计模式的出现改变了这种情况。通过对Struts 2框架和Spring MVC框架,以及一些相关技术的研究,本文旨在设计一个轻量级的MVC框架,以促进中小型Web应用程序的开发过程
关键词:MVC,框架,Spring MVC,Struts 2,依赖注入,解耦。
1.介绍
检索存储的数据并向用户显示数据(DoD)是大多数计算机系统的基础。用户对数据进行更改,并更新数据库(或数据存储)。数据流可能会促使一些人将计算机系统的这两个部分合在一起,以最小化所需的编码,提高系统的性能。当你开始考虑用户界面和数据存储大部分时间都是独立变化这一事实时,你会发现这种看似自然的方法面临着一个主要障碍。它可以用gmail(一个由alphabet公司提供的基于网络的电子邮件服务)的例子来说明。视图保持不变,而数据(电子邮件)更改更频繁。一个明显的解决方案是分离(模块化)这两个基本操作。但问题是怎么做?
模型-视图-控制器(MVC)模式是世界各地的开发人员几十年来一直使用的流行的设计模式。它是由Trygve Reenskaug于20世纪70年代首次推出的。它基于关注分离的概念(稍后将讨论)。模型与数据库系统(或简单的数据存储系统)交互,并响应数据请求。视图部分与DoD有关。控制器响应事件(鼠标单击、键盘敲击等),并通知模型和/或视图进行相应的更改。
2.文献综述
在讨论MVC之前,谈论软件设计模式(或设计模式或仅模式)是至关重要的。面向对象应用程序的开发之后,需要定期维护,定期更新。高复杂度的应用程序不易维护。应用程序中紧密耦合的模块使得不熟悉开发的开发人员几乎不可能在不影响其他模块功能的情况下对一个模块进行某些更改。这使得任务非常具有挑战性和耗时,导致生产力低下[10]。这里设计模式便作为解决方法出现了。
设计模式是解决重复出现的问题的系统方法。它不是一个完整的解决方案,而是一个模板(相当于体系结构中的蓝图)[7]。在书[2]中的其他二十二种经典设计模式中,Observer Pattern [2](一对多依赖)是MVC模式的基础。
从书中提取的一些文字:
- “将多个视图附加到模型以提供不同的演示”
- “改变视图响应用户输入的方式而不改变其视觉呈现”
这两句话提到了一个重要的概念,即解耦(第一个在视图和模型之间,第二个在视图和控制器之间)。
A.耦合
“耦合”是描述软件系统(通常是类)中两个实体[5]之间关系的术语。当一个类使用另一个类或与其通信时,就说它“依赖”于另一个类,因此这些类是“耦合”的。他们中至少有一个知道另一个。我们的想法是,我们应该尽量保持系统中类之间的耦合“松散”。因此,“松散耦合”或有时“解耦”(尽管在英语中“解耦”意味着“根本没有耦合”,人们经常用它来说明实体之间的松散耦合)。松耦合是好的,因为我们不希望系统的组件严重依赖彼此。我们希望保持系统模块化,这样我们可以安全地更改一个部分而不影响另一个部分。当两个部分松散耦合时,它们彼此更加独立,并且当另一个部分发生变化时不太可能断裂。
B.MVC
模型-视图-控制器模式最初由Trygve Reenskaug于20世纪70年代创造。在MVC架构中,系统被分成3个组件,每个组件彼此独立。应用程序数据由负责数据存储和检索的模型管理。视图的任务是将模型可视化地呈现给用户并获得响应。控制器是模型和视图之间的核心部分[8]。它解释用户请求并通知视图和模型进行相应的更改。
图1 MVC设计模式
MVC架构的优点:
- 关注点分离:MVC的所有组件都是模块化(或通用化)的,这有助于业务逻辑的可重用性。
- 开发者专业化和专注化:Web设计人员或用户界面(UI)开发人员可以设计网页或UI,而无需担心模型或业务逻辑。此外,数据管理员可以在不关心UI的情况下使用模型。
- 独立团队并行开发:上述任务可以同时执行,相互依赖性小,时间利用率高。
MVC模式已经存在了一段时间。MVC的引入由Trygve Reenskaug(如前所述)在Smalltalk-76中完成。他当时正在拜访施乐[4]帕洛阿尔托研究中心(PARC)。直到1988年,MVC的概念被“技术杂志”(JoT)引入。起初,它旨在通过图形用户界面支持所有类型的应用程序,最终Web开发人员采用了这种模式。
它的第一次流行是在1996年,当时首次推出了用Objective-C编写的WebObjects。很快,MVC模式也开始受到Java开发人员的欢迎。Java的框架,如Spring,延续了Java和MVC之间的紧密联系。Django(2005年7月,Python)框架和Rails(2005年12月,Ruby)框架的引入,两者都非常强调快速部署,使得MVC在传统企业环境之外大受欢迎,而MVC在传统企业环境长期以来都很受欢迎。在今天的时代,MVC不仅限于服务器端编程(在服务器上运行的程序,仅处理网页内容的生成)。客户端(在客户端机器(浏览器)上运行的程序,处理用户界面/显示以及在客户端机器上可能发生的任何其他处理,如读/写cookie)框架,如angularJS、reactJS也成功地以MVC模式出现。
3.相关作品
- Spring框架
Spring是一个开源的Java MVC框架。它最初是由Rod Johnson编写的,并且在2003年由Apache Foundation首次发布。它具有出色的XML配置,只有一个简单的问题,我们的技术已经超越了XML。的确,我们看到XML仍然在使用,但它是一种过时的技术,有一个重大的缺陷。
另一个主要障碍是框架的庞大规模,超过3600多个类。有些人会争辩说我们可以将Spring文件剪切成更小的文件。经验丰富的程序员花大量时间在jar中爬行,试图找到正确的Spring文件组合/顺序/版本,以使某个文件真正以这种方式运行。jar中的Spring文件是一个糟糕的坏主意。Spring框架是如此庞大和复杂,以至于它有自己的Spring Boot框架来让自己变得简单点。这就像一部关于莱昂纳多迪卡普里奥的电影,他试图通过深入地浏览XML和注释层来寻找他久已失传的Java代码,最终他放弃了。
- Struts框架
Struts是另一个流行的Java框架,由Craig McClanahan开发,在2001年6月由Apache Foundation首次发布。Struts的最新稳定版本是Struts 2.3.16.1,它于2014年3月发布。它没有问题,但有许多关键的错误。其中一个漏洞在数据泄露中被利用的。除此之外,它是过时的,维护不当,支持较旧的技术。缺乏文档和它的刚性使程序员难以使用。与普通的Java Web应用程序相比,该框架很难理解,因为它涉及各种复杂的过程。
4.项目设计
上述框架的庞大性和复杂性使得它们不太可能成为组织构建原型和小项目的候选者。需要提醒的是,我们正在提议一个新的框架——working title Bounce——它是轻量级的,易于学习和使用的。轻量级意味着与Spring和Struts 2不同,Bounce包含的类数量要少得多。它旨在缩短开发时间并且易于学习,当类与路径名相同时将直接将控制器引导到该特定类。例如:一个URL www.helloworld.com/randompath,其中的路径是/ randompath。框架搜索名为Randompath的类或randompath任何大小写的情况,它不区分大小写(此处RandomPath将用于所有路径名)。这是在反射类[代码段1]的帮助下完成的。
图2 代码段1
ServletName类包含三个方法,即getServletName,checkPackage,checkMapping和mapToFields。在上面代码的第一行,实例化ServletName类的对象,然后使用getSevletName方法从url获取路径名。请参阅下面[代码段2]的代码段。
图3 代码段2
然后执行搜索以检查是否存在与路径名同名的servlet。代码的第五行用于获取MappingHandler子类对象的引用。MappingHandler是每个类都需要实现的接口[代码段3]。之后将获取所有参数的名称。声明的类必须具有相同名称的字符串变量。如果存在,则使用setter方法执行映射。
图4 代码段3
MappingHandler是RandomPath类必须实现的接口。它返回一个RandomPath类的实例。该控件首先进入一个名为The Hub的类。该类负责处理所有请求。Hub从javax.servlet包扩展了HttpServlet类。
MappingHandler接口有两个方法,getMethod()和postMethod()。当客户端使用GET方法向服务器发送请求时,Hub调用RandomPath类的getMethod()方法,调用POST方法也一样。getMethod()将返回RequestDispacher类实例的引用[图5 ]。
图5 设计布局
5.未来范围
世界技术正在以前所未有的速度发展。功能最丰富,最完整的框架的缺点之一是其复杂性和庞大的规模。这使其难以学习并分割成所需的模块。通过这个项目,我们构建这样一个框架,它具有通用性、易学性和高效性。作为项目扩展的一部分,可以添加注释,其唯一目的是从用户获取元数据。例如,开发人员决定不使用路径名作为类名,借助注释可以处理它。进一步的改进迭代可能会看到框架与模型部分的Hibernate框架和视图部分的JSTL集成。
6.结论
模型,视图和控制器(MVC)模式已经成为一种流行且普遍接受的Web开发模式。大多数流行的编程语言至少有一个基于MVC模式构建的主要框架,包括Java。Java有许多MVC框架,其中两个十分流行。Spring和Struts 2(由Apache提供)已经存在了一段时间,并且具有许多独特的功能。但称其为完美框架将是不准确的。过时的(Struts 2)、缺乏对最新技术的支持和过于复杂陡峭的学习曲线(Spring)使它们不适合中小型Web开发项目。我们的想法是开发一个支持最新技术集成的新框架,同时保持简单而有效。
参考文献
- Trygve Reenskaug and James O. Coplien, “The DCI Architecture: A New Vision of Object-Oriented Programming”
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, “Design Patterns: Elements of Reusable Object-Oriented Software”, Addison Wesley. pp. 87ff. ISBN: 0-201-63361-2, 1994
- Leff Avraham;Rayfield James T., “Web-Application Development Using the Model/View/Controller Design Pattern”, IEEE Enterprise Distributed Object Computing Conference. pp. 118–127, September 2001
- Krasner, Glenn E.; Pope, Stephen T., 'A cookbook for using the model–view controller user interface paradigm in Smalltalk-80'. The Journal of Object Technology. SIGS Publications, Aug–Sep 1988
- F. Beck; S. Diehl. 'On the Congruence of Modularity and Code Coupling'. In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering (SIGSOFT/FSE 11), Szeged, Hungary, September 2011
-
Dandan Zhang; Zhiqiang Wei, Yongquan Yang, “Research on Lightweight MVC framework based on Spring MVC and Mybatis”, Sixth International Symposium on Computational In
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[20198],资料为PDF文档或Word文档,PDF文档可免费转换为Word