俞成功,罗文华,白锦表
(浙江医药高等专科学校 经营管理系,浙江 宁波 315100)
随着信息系统的加速发展,应用程序复杂程度不断提高,软件开发方法也不断地进行着螺旋式的演进——从结构化到构件化[1]。基于构件的软件开发CBSD(Component-Based Software Development)逐渐成为当前主流的软件开发方法。与传统软件开发方法相比较,CBSD将软件系统开发从代码开发转移到构件的集成与组装,使得软件系统的质量、复用率和开发效率得到大幅提高。
在基于构件的软件开发过程中,构件组装技术是核心技术,也是影响应用系统开发成败的关键。围绕构件组装技术,学术界和商业界对构件规范、构件封装、构件组装描述语言、构件组装框架和机制、构件组装工具以及异构模型下的构件组装等内容进行了大量研究和实践,取得了一系列的成果(例如 CORBA、EJB以及 COM/DCOM构件规范,青鸟软件构件模型及其软件产品线等)。但是随着Internet的快速发展,软件系统的运行环境发生了巨大的改变,由静态、封闭、集中逐渐向动态、开放和分布式转变[2],这对于以构件组装为核心的CBSD提出了更多的要求:(1)构件的网络化和异构化;(2)构件动态演化。
为适应当前软件系统的网络化发展,本文以Java、XML、Web Servicer和 Apache JUDDI[3]为基础,设计并实现了具有普适性的网络构件组装平台。该平台具有以下特点:
(1)基于XML的数据交换和基于Java的编程实现语言;
(2)支持网络构件和异构构件的组装;
(3)支持用户独立开发构件的组装;
(4)支持构件动态演化,包括动态组装、动态删除和动态替换;
(5)支持对构件服务访问权限的管理。
采用W3C推荐的XML加密[4]、XML数字签名[5]和XML密钥管理规范[6],以保证构件服务访问的安全性。
在文章最后,以本平台为基础,实现了计算机辅助教学平台的初步开发。该教学平台初期集成了GUI构件、基础教学软件构件和教务管理构件,并支持教师自主开发教学构件的集成和组装[7],极大地帮助了教学活动的开展,一定程度上提高了专业教学质量。
Web Servicer技术是本文设计并实现的网络构件组装平台的主要支撑技术。Web Service使用SOAP使服务提供者与服务使用者进行通信,使用WSDL文件描述服务,通过UDDI注册服务,他们都是基于XML语言的[8-9]。因此,构筑 Web Service的主要技术包括 XML、SOAP、WSDL和UDDI。在将Web Servicer技术应用于网络构件组装平台的过程中,需要重点注意以下几个问题:(1)网络构件动态演化机制,即如何处理构件的动态组装、动态删除和动态替换;(2)数据交换的安全机制,即数据的保密性和不可抵赖性;(3)网络构件的访问权限控制。
本文所描述的框架平台主要功能是对用户和构件进行管理:构件管理包括构件注册与删除、构件服务访问权限管理、构件动态演化;用户管理包括用户(组)建立与删除、用户(组)信息管理、用户(组)权限管理;同时提供统一的用户界面、服务接口和安全机制,如图1所示。用户或外部的网络构件与平台的数据交互首先要进行安全过滤,然后才能对平台相关服务进行访问[10]。
图1 平台用例图
基于上述功能需求分析,平台共包括3个组件:UI封装构件、安全组件和控制组件。其中控制组件包括用户管理、构件管理和权限管理3个子组件。如图2所示,UI封装组件提供 3类接口:Web Service接口、API接口和可视化图形接口。
图2 平台组件图
Web Service使用SOAP使服务提供者与服务使用者进行通信。SOAP消息是由一个必选的SOAP Envelope、一个可选的SOAP Header和一个必选的SOAP Body组成的XML文档。本平台基于W3C推荐的XML加密、XML数字签名对SOAP消息的SOAP Body进行重定义,使用巴科斯范式BNF(BackusNaur Form)定义的SOAP消息模型如下:
其中,SOAP Body中的 xmlsignature为消息发送方对 service或者service encryption的数字签字,满足W3C关于XML数字签字的规范;service encryption是对 service进行加密后的数据,满足W3C关于XML加密的规范;sp为服务提供者标识;sr为服务请求者标识;parameters为请求服务时的相关输入参数;rs为服务的响应结果。
UDDI主要提供基于Web服务的注册和发现机制,为Web服务提供3个重要的技术支持:(1)标准、透明、专门描述Web服务的机制;(2)调用Web服务的机制;(3)可以访问的Web服务注册中心。
基于UDDI,本文的控制组件使用了开源项目A-pache JUDDI,并扩展了基本功能:构件服务访问权限管理和构件动态演化。
平台采用构件自治和平台代理两种方式进行构件服务访问权限管理。
构件自治即构件自行决定是否对服务请求者提供服务,平台只提供相关的安全认证服务。平台代理则通过查询构件对平台中用户或其他构件的授权情况决定是否提供服务,平台维护授权模型定义如下:
图3 构件演化状态图
该模型基本含义为:构件component赋予服务请求者requestor的权限为authority。其中服务请求者requestor可以是构件 component,可以是普通用户 user,也可以是用户组group;权限authority可以是被允许的服务列表list,也可以是具有某服务集合的角色role。
平台支持构件动态演化,主要包括构件的动态添加、动态删除和动态替换。如图3所示,平台通过维护构件状态来支持其动态演化。
本文基于该框架平台,实现了计算机辅助教学平台的初步开发,其功能结构图如图4所示。
本文设计并实现的网络构件组装平台以Web Service技术为基础并进行了改进:(1)对SOAP消息的重定义加强了通信的安全性;(2)对网络构件的访问权限进行了统一管理;(3)支持网络构件的动态演化。该平台大大提升了软件系统的开发效率,适合网络构件的组装和用户自有构件的组装,实现了软件系统在运行中开发的转变,减少了软件开发成本和风险。但是本平台也存在不足,对网络构件组装的可靠性测试和服务效率缺乏研究,同时对于系统的跨操作系统也需要研究[11],这也是今后重点研究的方向。
图4 教学平台功能结构图
[1]夏榆滨.软件构件技术[M].北京:清华大学出版社,北京交通大学出版社,2010.
[2]杨芙清.浅论软件技术发展[J].电子学报,30(12A):1901-1906.
[3]Apache.UDDI specification version 3.1,Apache working draft[EB/OL].(2011-07-10)[2014-03-10].http://juddi.apache.org/docs/3.x/devguide/pdf/devguide.pdf.
[4]W3C.XML signature syntax and processing(second edition),W3C Working Draft[EB/OL].(2008-06-10)[2014-03-10].http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/.
[5]W3C.XML encryption syntax and processing version 1.1,W3C working draft[EB/OL].(2013-01-24)[2014-03-10].http://www.w3.org/TR/2013/PR-xmlenc-core1-20130124/.
[6]W3C.XML key management specification(XKMS 2.0),W3C working draft[EB/OL].(2005-06-28)[2014-03-10].http://www.w3.org/TR/2005/REC-xkms2-20050628/.
[7]臧影.基于组件的非线性软件开发过程研究[J].微型机与应用,2012,31(16):9-11.
[8]徐光侠,杨丹.基于Web Service技术的异构系统的无缝集成[J].计算机工程与应用,2007,28(6):1409-1411.
[9]孟晓军,张旭,宁汝新,等.基于 Web服务的企业集成平台框架研究[J].计算机集成制造系统,2008,14(5):891-897.
[10]李培松,刘觉夫.基于Web Service的面向服务架构(SOA)的研究[J].华东交通大学学报,2007,24(2):74-77.
[11]廖崇琦,文臣,邓文,等.一种基于 VxWorks的可重构软件框架设计[J].电子技术应用,2013,39(12):22-24.