从软件工程的角度对JSP页面和XSLT进行对比外文翻译资料

 2022-09-07 15:22:26

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


从软件工程的角度对JSP页面和XSLT进行对比

概述:

大多数网页应用主要通过动态网页,例如HTML,来展示内容和提供服务。总的来说,主要有两种动态网页生成技术---JSP和XML/XSLT。这篇文章主要是从软件工程的角度对这两种技术进行比较。

关于网页的生成这块,将会对JSP和XML/XSLT的基本概念进行简单的解释。本文会介绍广泛使用的软件构架的服务器结构层次以及这两种动态网页生成技术能够很好的适用于普通软件构架的原理。它的基本理论是基于model-view-controller设计模式,这种模式能够很清晰的展现出业务和逻辑的分离。

  1. 介绍

专业的网页应用一般是在由几层组成的分布式系统上执行的。JAVA 2平台,即企业版(J2EE)建议使用多层结构的www信息系统,包括前端的多个不同客户端,后台的数据库、遗留或是ERP系统以及位于前端和后台之间的两层或以上的服务器。服务器端的层次控制着处理流和产生用户接口(通常是HTML页面),主要是负责处理用户触发的事件。服务器的业务逻辑层主要是负责执行业务逻辑和提供进入后台系统的通道。

在多层架构中,服务器端的多层展示就够主要有以下两个优点:

(1)只有最近的软件架构是专门为生成复杂的WWW用户接口—HTML,WML或是其他格式,而设计的。

(2)有两种成熟的技术可以用于动态网页的生成。一种是JSP以及类似的微软旗下的ASPs技术,另一种则是XML和XSLT的结合。关于这两种技术的优劣一直存在着很激烈的争论。

作为软件经典的架构系统,网络应用的复杂性和专业性的上升需要高质量的标准。本文从软件工程的角度,对这两种可以执行服务器端介绍层的技术进行了对比。它对如何通过使用JSP或XML/XSLT技术来使得软件工程质量得到最大的提高进行了讨论。这一系列的讨论都是基于作者在进行电子学习入门的经历以及收获的经验。两种不同的电子学习展示层都在JSP和XML/XSLT上运行过。

  1. 网络应用的多层架构

近年来,互联网发生了翻天覆地的变化。现在互联网也能支持复杂的业务处理,而不再是仅仅局限于展示静态的HTML页面。最广为人知的例子就是网络商店、B2B市场和电子政务应用。为了执行企业商务系统,新的软件技术必须被应用到其中。Sun公司的J2EE体系以及微软公司的.NET体系都是趋向于使用基于因特网的多层次的软件架构体系。图一展示了J2EE的网页企业集群的多层架构。

  1. 客户端为用户的交互提供了接口。用户可以通过触发事件进入到系统服务。作为响应,应用专用数据必须返回给用户。在基于因特网的系统中客户端是网页浏览器,用户接口会被标记语言(大多数情况下时html)识别。另外,小型设备比如手机或是个人智能辅助设备(平板)也有着越来越多的应用。因此,网络应用系统的运行应该和前端设备独立开来,并支持多渠道。
  2. 服务器端展示层负责生成特定类型的客户端接口。HTML动态页面的生成依赖于业务逻辑层提供的数据和从数据库管理系统中获得的数据。因此用户可以获得一些数据驱动的或是仅自己能查看的内容。另外,层次结构也会控制对话进程,比如,验证用户输入信息并将其与业务进程进行匹配。

WEB服务器的旁边展示服务器分层结构。不同的编程技术可以满足不同的需要。在J2EE架构上Servelets和JSP主要是用于产生动态网页,XML/XSLT则是一种可选的技术。

  1. 应用特定的业务逻辑在服务器端业务逻辑层中实现。J2EE体系架构中的业务流程和业务对象的实现为企业JavaBeans(EJB)驻留在应用服务器。应用服务器管理生命EJB的周期,提供了众多的服务,如持久性或安全性。
  2. 数据层提供连接到后端系统,包含系统数据。几种不同的技术是可能的,如数据库管理系统,目录系统,XML或ERP系统。
  3. 服务器端表示层的通用体系结构

服务器端表示层设计的主要目标是明确的分离演示特定问题和对话框控件。几种设计模式已经建立起一种通用的服务器端表示层软件体系结构。最基本的展示模式是“前控制器模式”和“视图辅助模式”。这种架构已经证明其在一些网络应用中的适用性。在这个架构的Web页面的生成(视图)是由JSP和XML / XSLT实现的。话框流控制的实现是通过单独的组件--------一个事件调度程序和几个操作类。

事件调度程序是每个用户事件的中心访问点。起初,调度程序一个是HTTP请求的参数命令字符串标识用户事件。收到的命令字符串相关的动作类能立即意识到所有任务对处理用户事件触发的某些服务都是必须的。例如,业务逻辑层的一个动作类的访问服务接收数据,并将它传递给视图组件。这种方法在外观上将逻辑层分离出来,使其变得了模块化和更加灵活。在这种模式下,不需要耗费太多精力对现有的应用程序新型扩展和添加新的功能。实现控制流只需要添加一个新的操作类。此外,它必须保证在必要时调度程序对新的操作类进行实例化。

  1. 由于用户交互的客户端装置触发一个HTTP请求并提供参数和一个命令字符串,该字符串标识用户交互。
  2. 事件调度器接收HTTP请求并提取命令字符串。在J2EE架构中它是由一个所谓的前端控制器Servlet完成的。调度程序提供一个控制安全和日志记录的单节点。
  3. 调度员实例化一个相应的由命令识别字符串定义的动作类。这个动动类负责进一步得处理请求。
  4. 具体动作类访问业务逻辑的对象和方法,并调用商业逻辑外观的必要方法。例如,它确定了请求参数并将它们传递给持久存储的服务器端业务逻辑层。在J2EE架构中,业务部分由EJB组件实现。
  5. 作为执行业务的结果,业务对象从业务逻辑层返回。结果通常包含网页动态内容的数据。
  6. 确定合适的视图组件。视图组件和必要的业务数据被传递到视图发生器。视图生成器选择视图组件,生成所需的目标语言并将业务数据插入到视图对象中。
  7. 生成过程的结果被传递给响应对象的输出流,并且是发送一个HTTP响应返回给客户端。
  8. 网页生成技术

JSP和XML、XSLT这些成熟的技术可用于动态网页生成。在3节中简要介绍了它们的基本概念,提出了通用的体系结构,更深入的介绍了每一项技术。

    1. JSP

JavaServer Pages(JSP)[ 6 ]扩展标记文件的java源代码.例如,在网页中插入动态的的应用程序特定的数据。一个JSP组成,可以是任何格式的文本模板。在大多数情况下jsp中是HTML代码,但其他格式(WML、TeX等)也是有可能的。此外,JSP包含java源代码也就是所谓的脚本。JSP中每个HTTP请求都会触发对嵌入式java语句的执行。其返回值被插入到标记页中,随后整的页面被传递给客户端。模板文本与java语句混杂在一起将导致源代码相当复杂和难以理解。为了避免使用java语句,可以提取它们具体的类,这样JSP就可以通过自定义标签来调用它们。

在JSP中不同的具体动作类负责与业务逻辑层交换数据并选择对应的JSP页面。数据交换通常是通过JavaBeans来实现的, 因为JSP中用很简单的符号就可以使用它们。为了在JSP中显示动态内容,用其他方式来进行数据交换也是有可能的,例如将数据包含在HTTP请求对象中。图3显示了在JSP中HTTP请求的控制流。在第3节中步骤1-5是相同的。

步骤6:为了提供必要的数据,动作类调用业务逻辑层的适当方法并通常存储在JavaBeans中。此外,合适的JSP语言被定义。JSP名称和必要的JavaBeans被传递给视图生成器。视图生成器调用JSP页面并将执行的Java语句嵌入到里面。一般来说,为了使页面完整,调用的JavaBean的属性会被插入为模板文本中。

步骤7:JSP的输出依赖于HTTP响应并将输出流并发送回客户端。图4所示的示例列表说明了两中不同的概念java和html是如何混合的。示例应用程序是一个登录页面,在登录成功之后用户的名字、电子邮件地址和密码都会被显示出来。在2号线和useBean-statement 和getProperty-statement(线8,14,18)通过使用business.Member的newmember的名字访问(java)成员对象

    1. XML和XSLT

XSL语言是为了处理和显示XML数据而开发的。具体包含以下两种技术:

  1. XSL-FO(XSL-formatting objects),一种用于格式化XML数据的语言。
  2. XSLT(XSL transformation),一种将XML数据转化为另一种XML格式的语言。

转换语言XSLT的使用使得将一个给定的XML数据转换成任意的XML结构成为可能。因为XHTML是由指定XML的,即XHTML附加在XML DTD后(文档类型定义),所以从一个任意的XML数据XSLT样式表生成动态的XHTML页面是有可能的。

XSLT是由几个可以用来定义描述XML文档元素的模板规则的标记元素组成的。XSLT处理器,例如Apache 的Xalan,对于XML文档样式表的转换规则的应用是必要的。处理器的输入是XML数据以及XSLT样式表,经过转换后输出的又是一个XML文档。因此,通过使用不同的样式表,相同的数据结构可以被转换成不同的输出格式,如HTML或WML。

当只有XML数据和XSLT样式表被使用时,在XSLT转换数据的业务逻辑层不能被访问的。因此,目标语言的生成是完全的独立于调度程序和动作类的编程语言。

在图6和图7的例子显示了已用于图4中的示例应用程序中的XML数据结构和样式表。样式表包含了与ISP中相同的HTML表达语句。然而,数据的插入是通过XSLT模板规则完成的。例如在第11行和第13行中的XSLT元素lt;xsl : template match = “person”gt;andlt;xsl : valueof select = “nickname”/gt;提取出位于lt;persongt;元素中并被lt;nicknamegt;元素包围的字符串。

  1. 从软件工程角度对这两种技术进行比较

大型的网络应用,如国际化,的标准功能需求要支持不同的客户端设备(多渠道发布)、个性化等,这些都可以用JSP以及XSLT实现。根据其功能的要求,这两种技术都非常适合网络应用程序的实现。

由于网络应用的复杂性和专业性的上升,需要尽可能高质量标准的经典软件系统。本节对两种不同的执行服务器端表示层的技术进行了比较。它讨论了实用JSP或者XML与XSL能够多大程度上提高团建工程的质量要求。讨论是根据产品和工艺质量的行之有效的标准来进行的。结果获得了一个软件开发项目,其中2个版本的电子学习门户已经实现—一个在JSP上,另一个在XML/XSLT上完成的。

    1. 产品质量

软件产品质量最重要的问题就是它的基本架构。模型-视图-控制器(MVC)模型的建立主要是作为图形用户界面的开发的主要原则。MVC模式最初是为编程语言Smalltalk-80而开发的。MVC模式的核心思想是对用户界面的组成部分之间的关注点进行清晰的分离。它对应用程序(模型)的数据,呈现给用户(视图)的数据和对正在执行的用户事件的控制进行了区分。

因此运用MVC模式是实现软件组件的基本质量标准的可维护性,可扩展性和可重用性的关键。当然,其他几个设计模式也对软件质量有着显著的影响。对于已经提出的几种J2EE表现层的设计模式则是对MVC范例的改进。第3节中提出的通用架构可作为实现MVC的基础模式。它实现了对事件调度员和操作类的对话框控制。在第4节中展示了模型和视图组件如何通过这几种技术来实现。

在动态JSP页面中,通常是通过JavaBeans将应用程序特定数据传递给视图组件。但其它机制也可以应用,例如使用请求对象。该JSP是负责数据的图形显示。它包含HTML模板文本并访问JavaBeans通过简化Java语句或标签库。在XSLT中提供的动态数据是XML格式的。XSLT样式表转换的XML结构到HTML页面中,以此来实现视图组件。MVC模型,即模型-视图-控制分离的模型可以在这两种技术中被应用。然而,JSP和XML/ XSLT却是以不同的方式来发挥它的优势。

JSP并不能直接支持MVC模型。只有一个相当复杂的软件设计,像在第3节提出的,以及有计划的开发者是成功应用该模式的先决条件。JSP的主要问题是完成了的JAVA API接口对于JSP的视图层组件是可用的。因此,它也有可能可以执行控制组件的功能,例如,在JSP中进行业务逻辑处理。然而为了实现清晰的软件设计,这种情况是必须要避免的。特别是新手程序员在他们的第一个JSP项目中倾向于混合html和java代码导致代码难以理解和维护。此外,JSP具有潜在的能力在相关的JavaBeans中改变的业务对象的数据。一方面,它破坏了模型和视图之间的强耦合,但另一方面,它有利于处理业务层的数据。

但是XSLT技术是可以直接支持MVC模式的。XSLT样式表中,XML格式支持的模型和视图之间存在固有的分离。XSLT样式表是从数据完全解耦的:他们只知道XML数据的形式化定义,通过DTD或XML Schema 的规定,他们没有完全的权限访问数据(只读)。除了知道数据的结构,样式表不知道数据的其他任何知识,特别是它是如何产生的。生成的XML数据、选择适当的样式表和调用XSLT处理器都需要被定义好,不能由视图组件,即XSLT样式表,处理。

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


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

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

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版