WCA:一种面向Web系统的通用组件架构
2022-03-31
来源:步旅网
维普资讯 http://www.cqvip.com CN43—1258/TP 计算机工程与科学 2006年第28卷第7期 ISSN 1007—130X COMPUTER ENGINEERING&SCIENCE Vo1.28,No.7,2006 文章编号:1007-130X(2006)07—0039—04 WCA:一种面向W eb系统的通用组件架构 WCA:A Common Component Architecture for Web Applications 许炜,徐晶,杜娟 XUWei,XU Jing,DU Juan (华中科技大学电子与信息工程系,湖北武汉430074) (Department of Electronics and Information,Huazhong University Science nad Technology,Wuhan 430074,China) 摘要:随着Web应用的爆炸式增长,面向Web的工程理论和方法研究得到了广泛的重视。本文针对web工程应用 中存在的通用架构设计和组件重用等问题,提出了一套灵活、可扩展的web组件架构模型WCA,以及与之相辅的一套 Web系统分析、设计、编码与测试的方法体系。 Abstract:With the explosive growth of Web applications,more and more attention is paid tO the research of Web engi— neefing theoretics and methodology.This paper first presents a flexible and extensible Web component architecture called WCA.which is able tO solve the problems of common architecture design and component reuse in Web applications.Fur- thermore,an integrated methodology of Web system analysis,design,coding and testing is added tO it 关键词:Web工程;web组件;通用组件架构;接口;封装;移植;重用 Key words:Web engineering;Web component;common component architecture;interface;encapsulation;migration;reuse 中图分类号:TP311 文献标识码:A 此这个时期又可以称为ActiveX组件化设计阶段[2]。在这 1 引言 个阶段,组件处于整个访问链的最上端,为Web系统提供 共性和基础性的服务[3]。之后,又出现了具备跨平台操作 随着因特网的迅猛发展,Web已经逐渐成为各种应用 能力的JavaBe ̄n组件技术,它所具有的独特的自查和定制 的主要平台。如今的Web系统在规模和复杂程度上都有 特性[4]大大提高了组件的重用能力。但是,与ActiveX控 了显著提升,这就对Web工程[1]提出了更高的要求。然 件相比,JavaBean并未给Web组件带来实质性的变化。 而,架构问题和组件化问题依然是束缚Web系统发展的重 StrutsC。 和TagLibs[ 技术的出现,使得Web组件的 要因素。因此,本文从业务重用的角度提出了一种面向 发展达到一个新的高度。此时,Web组件的概念已经从系 Web系统的通用组件架构,即wCA(web Component Ar- 统服务层次跃迁至业务逻辑层次。将业务逻辑与用户界面 chitecture,简称WCA)。它通过规定Web组件的封装规则 分离是这两种技术的共同特点c7 ;同时,这种基于MVC的 及接口描述,将传统Web系统中的功能模块改造成通用 应用框架设计使得页面代码在变清晰的同时,也提高了业 Web组件,从而使其具备更强的重用和移植能力。 务逻辑处理单元的重用性。 本文提出的WCA架构进一步发展了Struts和 2 Web组件化思想 TagLibs的封装隔离思想,并结合Web系统模块通用性高 的特点,以完整的组件功能作为划分粒度,对模块的接口及 Web领域的组件化设计思想一直是业界研究的重点。 其内部实现进行重新规划和调整,使组件的概念在系统服 早期对组件的认识基本上还停留在传统组件对象模型的基 务、逻辑处理以及业务功能三个层次得以上下贯穿,从而形 础上,由于当时组件的实现大部分与ActiveX技术有关,因 成完整的Web组件框架。 ・ 收稿日期:2004-09-03;修订日期:2005—03 24 翥蓬 ;喜磊界 嘉:戆臻; 霉鸷 星 奘辜笔拿写 霍 方向为Web工程和We焉磊 b服务事务处理技术等。震 漂 差 通讯地ess I: ,T: E。AddrC。? De p湖ar北tm省en武t 汉ofE市le华ct中ro科nic技sa大n学dI电nfo子rm与a信tio悬n,工 H程ua系zh互on联gU网n中iv心er;sTity。 S:c‘i。en c e an 。d Te ch n oBlomg yih ,W…xuweiuhan@hust,H…ube,edu.cn il 430074,' 维普资讯 http://www.cqvip.com 的系统中。 3 WCA通用组件架构 3.1定义 Web组件框架WCA:一套面向web系统的通用组件 3.3组件封装 Globalean是构造wCA虚拟总线的载体,它在用户 B操作web系统的过程当中保存重要的系统运行参数,例如 用户的基本信息、所属单位和部门、所具备的多种操作权限 以及一些必要的系统信息(登录状态、在线时间)等。这样 既省了用户进入具体功能模块再次查询的时间,也为运行 开发接口描述规则及其系统定义,同时也是一套指导web 系统分析、设计、编码与测试的完整方法体系。 WCA中的web组件:一个实现了完整功能的独立模 块,它包含表示层、业务逻辑层和数据层的所有相关内容, 遵守WCA框架中对组件接口的描述规范,是构造web系 参数的映射做好了充分的准备。如图2所示。 统的最大逻辑单元。 3.2 WCA组件框架 WCA的核心思想是构建一个统一、开放的系统框架, 使各种功能组件能够迅速地部署和运行。WCA架构如图 1所示。与计算机的系统结构相同,wCA的核心由一个虚 拟的系统总线和一套统一的接口描述规则组成。系统总线 为各个接入模块提供了传输标准格式数据的通道,并为每 一个外接组件提供统一的装载接口。具体到wCA框架 中,是通过GlobalBean和LocalBean这两个类来完成上述 工作的。 图1 WCA架构图 系统总线的概念在软件设计中很早便得到了普及_8], 但相对于Web系统则需要一些特殊的变化。它们主要体 现在:(1)系统总线是一个虚拟的数据交换区,在运行时才 能被临时分配。在Web系统中,它通过会话(Session)对象 来实现。(2)系统总线并不是web系统功能模块唯一的交 互通道。由于web系统主要是驱动和反映数据库中状态 的变化,许多模块间的交互是通过直接的数据操作来完成。 (3)系统总线传输的数据往往是系统运行时的必要参数,而 这些参数在Web系统中具体体现为角色信息、系统信息和 权限设置等。 系统总线的接入是WCA关注的另外一个问题。每个 完整的WCA组件都是由一系列具有高内聚特性的web 页面和数据表构成。它们需要系统总线提供两方面的灵活 接入特性,即:(1)运行时系统参数的灵活筛选和映射操作; (2)组件间数据访问的低耦合特性。这两个方面的任务都 由个性化的LocalBean来完成。简单地说,每一个接入系 统总线的Web组件都唯一对应于一个客户化的Local— Bean。LocaleBan对内是组件的局部变量表,对外是组件可 唯一定制修改的方法接口。只要完成LocalBean的调整工 作,组件就可以迅速地移植并部署到任何支持WCA架构 40 图2 GlobalBean封装结构 由GlobaleBan和LocalBean共同完成的数据映射是 WCA体系中的另一项重要内容。对于任何一个Web组件 而言,都需要或多或少向系统获取运行参数,例如用户帐 号、用户姓名、用户所在部门、用户权限等。这些数据是组 件内部所有web页面和业务逻辑Bean直接依赖的基础。 然而,从另一个角度来说,每个Web系统对这些运行参数 的设定都不会相同,会出现命名不一致、元素缺失、元素组 合或拆分等情况。只有通过总线与组件参数映射的方式, 才可以充分保护组件内部的代码资源,最大程度地提高 Web组件的重用性。如图3所示。 图3组件的封装结构及LocalBean LocaleBan中的回调方法也是wCA解耦设计的一个 亮点。与传统的组件设计不同,web组件对外提供的不是 系统服务,而是整体的功能服务,包括完整的用户界面、业 务处理及数据存储功能。因此,LocalBean在设计当中,遵 循的是一套“公开实现、隐藏调用”的“逆向”原则。也就是 说,凡是web组件中包含对组件外web页面、业务逻辑处 理JavaBeans以及数据表的操作,全部以回调方法的形式 实现,即相关操作的编码都在LocaleBan中具体实现,而 web组件内需要调用该操作的地方则统一采用调用方法 的抽象形式,从而避开代码级别的紧密耦合。如果web组 件移植到一个新的系统中,外部关联的变化全部可以在 LocaleBan的回调方法中加以调整,使web组件对外界的 依赖全部通过LocaleBan实现。所以,WCA中称Local— eBan为web组件的挂接点(Atmch Point,简称AP)。如图 4所示。 3.4 自顶向下的设计方法及组件测试环境 wCA架构本身也包含了一套web系统分析、设计、编 维普资讯 http://www.cqvip.com 的并发程度。 4应用案例 下面以Web办公自动化系统的邮件收发功能为例,说 明WCA封装过程。通用的邮件收发功能通常包括邮件编 辑、邮件发送、收取邮件、回复邮件、转发邮件等。一般而 言,邮件收发功能组件的内聚性相当高。但是,为了方便用 户,组件需要扩展其发送地址选取方面的辅助功能,即:(1) 选择自己通讯录中的邮件地址;(2)选取和自己在同一个工 作部门的人员的邮件地址。这种扩展显然破坏了邮件收发 图4 LocalBean接口实现不意图 码与测试的完整方法体系。在整个体系中自始自终贯穿着 自顶向下、逐步求精的设计思想,在以下几个方面表现尤为 突出: (1)关注系统的总体设计。对于Web系统开发而言, 角色和权限之间错综复杂的关系永远是制约系统开发和维 护的架构性问题,往往牵一发而动全身。所以,WCA首先 强调的是Web系统中的人员组织关系和权限分配,即确定 GlobalBean所要包含的具体内容,它强迫设计人员在Web 系统开发的初期就明确定义出这些全局性的架构性问题。 (2)预先确定组件的关联接El。由于开发Web系统的 技术起点较低,所以对于大多数Web系统开发而言,详细 设计得不到充分的重视,模块级的开发也过于随意,导致 Web系统集成的复杂度大,维护困难。而WCA框架通过 在详细设计阶段确定LocalBean的方式来确定每个独立功 能模块的接El边界,使得开发工作得到了最大程度的规范。 (3)模块化的测试。web系统的测试始终是一个麻烦 的问题。由于一直没有组件的概念,所以Web测试总是围 绕着整个系统来进行。由于模块间相互关联,导致测试效 果欠佳,效率低下。而WCA通过明确定义总线接El和组 件关联接口,使得在系统总线上进行单一组件测试成为可 能。即使组件和外部有着密切的关联,WCA也能为该组 件提供完整的模拟测试环境,从而大大提高了组件的开发 质量和测试效果。 WCA框架在组件测试过程中的优势主要体现在以下 两个方面:(1)组件测试环境的搭建;(2)组件外界依赖的解 耦。在系统编码的早期,开发人员即可完成系统总线及导 航模块的设计工作,为后续功能模块的开发提供最精简的 测试集成环境。通过挂接单一组件而完成其核心功能的 黑、白盒测试工作,避免其它功能模块带来的不良影响。与 此同时,追求系统组件间的零耦合是不现实的,友好的人机 界面设计总使系统模块间存在纷繁复杂的关联。这种关联 给传统的测试工作带来了巨大的困难:如果与测试模块相 关的其它功能还没有开发完毕,系统的测试工作将无法开 展。然而,WCA架构则很好地解决了组件测试工作中的 解耦问题。由于所有组件需要与外接交互的功能都在Lo— calBean的回调方法集合中给予了具体实现,如果这些方法 尚无法正常运行,可以用简单代码替换这些方法的实现,以 直接赋值的方式来模拟相关功能模块的输出结果。这样, 测试工作便可以完全独立出来,大大增强了Web系统开发 功能组件的内聚特性,让它跟组件数据表以外的通讯录数 据表和用户信息数据表发生了关联。 WCA框架很好地解除组件内外表之间的耦合关系, 在邮件收发模块的Web页面和业务处理JavaBeans中,凡 是涉及到需要访问通讯录和用户信息表的地方,都统一调 用loadDomainPersons()和loadAddressList()两个方法。 这样,在将组件加入Web系统的过程中,只需具体实现 LocalBean中的这两个方法即可,将移植的主要工作集中在 接El参数的调整上。这种隐藏调用、公开实现的逆向设计, 成功地为web组件解耦。 同时,GlobalBean和LocalBean_的结合还很好地完成 了组件与系统总线的对接。LocalBean.1oadGloballnfo() 方法完成全局数据与组件局部数据的映射工作,这样使组 件内部的功能完全依赖局部数据来实现,即使组件移植到 了另一个系统中,只要调整LocalBean的数据映射工作,组 件内部的所有功能都可以保持不变。 5 结束语 随着WCA架构的逐步完善,开发相应的管理及开发 工具也成为可能。在有了相应的系统设计、编码与测试工 具以后,相信它的优势能够得到进一步的发挥。 wCA并不需要任何特殊的软件环境支撑。简单地 说,它是一个由开发者遵守的一套接口定义和封装规则。 当然,定义了这样一套规则并不意味着Web组件中的所有 内容都不能改变,如果需要,开发人员可以实现任何需要扩 展的功能。不过,它在调整后需要作为一个新的Web组件 来维护和使用。 wCA既是一种面向Web系统的通用组件架构,又是 一套服务于Web系统分析、设计、编码与测试等开发工作 的方法体系。其核心思想是通过Web组件内外关联的解 耦,使得Web组件可以在一个开放、稳定、统一的架构下不 断完善、不断积累,从而形成可观的规模,促进Web系统研 发及其相关技术领域的发展。 参考文献: [1]杨卫东,詹梅,施伯乐.面向对象的Web工程[J].小型微型 计算机系,2003,23(1O):1729—1734. [2]陈文博,夏长虹.以组件对象为中心的动态Web开发方法 [J].计算机应用,2000,20(6):17—19. [3]周俊生,袁春风.对象Web的实现技术分析[J].计算机应 4】 维普资讯 http://www.cqvip.com 用研究,1999,16(2):4-6. 协议功能和描述网络状态。而我们的测试案例不仅仅是针 对Is-IS协议的基本功能,还对Draft中规定的TLV进行 了测试。因此,对于某些特殊的测试案例,如对于验证方面 的支持,测试结果是通不过的。针对这个测试结果,我们将 通过修改Zebra中的某些代码,添加Zebra中没有实现的 [4]王海峰,马磊,王永滨.利用组件结构集成基于Web的应用 [J].河北工业大学学报,1999,28(2):78—81. [53 Apache Jakarta Group.Struts User and Developer Guides [EB/OL].http://struts.apache org/userGuide/inde】L ht— ml,2001—07. [6]Apache Jakarta Group.Jakarta Taglibs Project[EB/OL].ht— tp://jakarta.apache ̄org/taglibs/index.html,2002-03. 上述功能,再次对其进行测试。通过修改与测试交替的过 程,不断地完善协议功能,可以更加清楚准确地理解I-ISS 协议运行机理的各个阶段。这对于以后将Is-IS路由协议 软件移植到运行其他操作系统的路由器上进行一致性测试 奠定了良好的基础。 [7]寇毅,吴力文.基于MVC设计模式的Struts框架的应用方 法口].计算机应用,2003,23(11):91—93. [8]余晓,吴剑章,江明菲.基于软总线的系统管理模型[J].计 算机工程,2000,26(增刊):469-473. (Y-接第24页) 图5 I Is一致性测试系统框架图 令行这两种方式对测试环境进行初始化配置、初始化测试 连接、创建必要的数据结构等;同时,根据用户的命令选择 测试案例。在执行不同的测试案例时,可以通过它们适时 地对设备的配置参数进行修改,以及控制协议测试的各个 案例的运行。 (2)对于协议测试的不同案例,需要模拟不同的网络拓 扑结构以及对Anvl和被测设备进行不同的配置。这些配 置信息存放在测试配置信息库中,通过命令行导入,也可以 直接以命令行的方式对设备的配置进行修改。 (3)测试执行和测试判决是整个协议一致性测试的核 心阶段。测试集中的每一个案例都由一个代码块实现,而 且代码块之间是相互独立的。首先由测试案例产生测试数 据和正确的结果;然后发送与接收报文,与被测设备进行交 互;最后是对反馈回来的报文进行检验,判断测试是否通 过。在此过程中,所有的测试报文都记录在测试结果日志 当中,以便对测试过程及结果进行检验。测试阶段可以单 独执行某个测试案例,也可以连续执行多个测试案例。在 测试过程中,对于协议运行的同一个阶段的测试,一般连续 执行多个测试案例。但是,在测试协议功能运行较为复杂 的阶段,则对每个测试案例单独执行。 根据上述的测试流程,我们在运行了Zebra软件的机 器上对IS-IS协议进行了一致性测试。测试结果表明,大 部分测试案例的测试结果符合协议的一致性要求。但是, 由于Zebra上的IS-IS路由协议对于HELLO PDU和LSP 的处理并没有完全按照ISO 10589中所规范的实现,有些 必需的TLv也没有进行编码。因此,在传递路由信息的 时候,它只是实现了协议的一些基本功能,并没有完全实现 42 6结束语 本文对I IS协议进行了基本的分析,根据协议的特 点确定了对其进行一致性测试的内容;利用现有的Anvl测 试系统,并在其基础上进一步设计了对I-SIS协议进行一 致性测试的测试过程;编写了一部分测试案例;搭建了协议 测试环境,并对协议进行了具体的测试;对测试结果进行了 初步的分析,修改了部分协议代码,增添了协议的验证功 能。在以后的工作中,将进一步完善对Zebra软件中的I-S IS路由协议的修改和测试,为将其移植到其他操作系统环 境打下一个良好的基础。 参考文献: [13 ISO 9646,Information Technology-Open Systems IntereOn— neetion-Conformance Testing Methodology and Framework [s]. [2]ISO DP 10589,Intemrediate System to Intermediate System Intra-Domain Routing Exchange Protocol for Use in Con- junction with the Protocol for Providign the oCnneetionless- Mode Network Service(ISO 8473)[s]. [3] Abe Martey.凡璇,候志荣译.IS-IS网络设计解决方案 [M].北京:人民邮电出版社,2002. [4]http://www.zebr&org,2004—03. [5]R Callon.Use of OSl IS-IS for Routing in删IP and Dual Environments[R].RFC 1195,1995. [6] Sampo Saaristo.Implmeentation of IS-IS Routign Protocol ofr IP Versions 4 nad 6:[Master’s Thesis][D].Institute of oCmmunication Engineeririg,Tampere University of Tech- nology,2002. [7]赵邑新.BGP-4协议一致性测试研究:[硕士学位论文][D]. 2000. [83 Tony Prz enda.Reservde TLv Codepoints in ISIS[Z]. draft-ietf-isis-wg-tlv-codepoints-02.txt,2001.