—
基于SOA 的分布式应用集成研究
丁兆青,董传良
(上海交通大学计算机科学与技术系,上海 200030)
摘 要:分布应用集成的目标是无约束地连接分布的应用程序,并实现应用程序间的数据和功能的共享。该文分析了分布式应用集成的基本概念、特征、集成层次以及基本问题,结合SOA 给出了一种分层体系结构及其J2EE 实现框架。 关键词:DAI ;SOA ;集成层次;BPEL
Research on Distributed Application Integration Based on SOA
DING Zhaoqing, DONG Chuanliang
(Department of Computer Science and Technology, Shanghai Jiaotong University, Shanghai 200030)
【Abstract 】The goal of distributed application integration(DAI) is to connect distributed applications freely and share these data and functions. This article analyzes the concept, character, arrangement and problems of integration, and then provides a layered architecture based on SOA and J2EE. 【Key words 】DAI; SOA; Integration arrangement; BPEL
计 算 机 工 程Computer Engineering 第33卷 第10期
Vol.33 No.10 2007年5月
May 2007
·工程应用技术与实现·文章编号:1000—3428(2007)10—0246—03
文献标识码:A 中图分类号:TP311
经过多年的发展和业务的不断扩张,很多企业通过内部开发、购买以及企业并购得到了许多各式各样的软件系统和应用程序。将各种异构的信息整合在一起提供一个同构的画面,不但可以降低成本,而且能大大提高企业的竞争力。
本文概述了分布应用集成的基本构成、特征以及核心技术,分析了分布应用集成的关键问题及其解决方案。在此基础上,探讨了SOA 在分布式应用集成中的作用及具体实施问题,并提出了一种用J2EE 实现的应用集成框架。
1 分布式应用集成
分布应用集成的目标是无约束地连接分布的应用程序,
并实现应用程序间的数据和功能的共享,这种共享是以不对应用程序本身做大的修改为前提条件的。因此不对应用程序代码和数据结构做大的修改时,集成其它应用程序的能力是
分布应用集成技术的基本特征。 1.1 分布式应用集成的基本概念
分布应用集成的技术和方法涉及的范围较广,主要集中在分布式系统、组件方法、中间件平台、软件体系结构4个方面。分布应用集成在借鉴了以上4方面方法的同时,其解决问题的重点又与上述研究领域不同。首先它本身集成的是的应用系统,具有更大的集成粒度。其次复杂的分布应用集成需要集成中间件作为传递数据和控制的载体,它不像组件方法处于同一命名空间。
图1 分布应用集成的技术和问题
集成的应用系统具有更多的多样性,例如,从软件体系结构来说,应用系统所采用的软件体系结构各不相同,其使用的连接器不同,对外所提供的集成点(集成点是指外部系统通过它能够进入应用系统从而能够访问数据和调用功能)也各不相同,并且在一般的集成场景中,对应用系统的体系结构往往是未知的,所有这些都增加了分布应用集成的困难度。从较高的抽象层次来看,分布应用集成主要解决数据转换、通信连接、访问介入3大问题,如图1所示。
1.2 分布式应用集成的集成层次
由于各个信息系统所采用的软件体系结构、实现语言、对外提供的集成点及交互协议的不同,分布式应用集成有其具体的复杂性,一般的解决办法是将集成问题划分为多个层,不同层的集成问题采用不同的集成方法,依据集成点的不同,通常将集成层次从低层到高层分为传输机制、数据集成、接口集成、过程集成。传输机制提供在两个或多个集成点间连接和移动数据的传输渠道,在传输层上连接多个系统。主要有同步(如HTTP ,SOAP )和异步(如消息中间件)两种。数据集成层是建立在传输机制层之上,不仅要解决数据传输和转化等基本功能,还必须解决应用系统访问、应用句法和应用语义3方面的问题。
应用系统访问是指能够从应用系统的数据存储中抽取和插入数据的能力,同时也包括抽取元数据的能力。应用句法是指应用系统特定的数据结构,不同的应用系统具有特定的应用数据结构,有效地实现数据集成需要改变应用句法。应用语义对于复杂的分布应用集成是必要的,意味着当源数据从一个应用系统到另一个应用系统进行转换和传递时,必须考虑数据应用的上下文环境。接口集成层主要是针对业务逻辑而来的,允许应用系统间的业务逻辑共享。现在主要有EJB 、CORBA 和COM+等集中技术。过程集成层是集成的较高层次,过程集成的对象是过程实体,通常表示为逻辑实体。具体地说,过程集成的是由活动驱动的业务过程,而不是由应用数据传输和转换来驱动的。
作者简介:丁兆青(1981-),男,硕士,主研方向:分布式应用集成;董传良,研究员
收稿日期:2006-05-30 E-mail :dingfirst_dzq@163.com
分布应用集成是解决地域上分布的、同构的或异构的应用程序间交互的问题。造成分布应用集成的困难主要是由于应用系统间的不匹配,而这种不匹配问题分布在应用系统的多个方面。应用系统的这种不匹配性在某种程度上来说是不可避免的,减少组件不匹配的一个策略是遵循特定的组件打包标准,从而达到“即插即用”的适配,但还是有多个标准并存,如CORBA、EJB、COM+、java class library等,遵循一种标准的组件很难实现与遵循另一标准的系统相集成,同样,在软件体系结构研究中,认为好的软件系统设计应该选择最适合系统的体系风格,而每种风格暗示着至少采用不同交互机制,因此也很难实现互操作。主要有以下3个问题:数据的多样性问题,应用系统的通信问题,应用系统的访问问题。
分布式应用集成的基本问题即数据共享,数据共享意味着能够在数据的格式、句法及语义3方面达到一致。XML是一种封装了数据和元数据的结构化文档,这种封装能力允许不同的应用系统和数据库在彼此不知道数据格式的情况下交换信息,可以说,XML为分布应用系统的信息交换提供了公共机制。
分布应用集成为传输控制流和数据流所需要的载体是一个相对的实体,需要满足系统分布特性的需求,如系统对耦合性、实时性、多对多、点对点等空间、时间、拓扑特性的需求。对于分布式应用集成来说,通常采用消息中间件、事件中间件、元组空间、RPC、RMI、SOAP等方法作为分布应用集成的载体,实现异地的数据流和控制流的传输。SOAP 消息的格式是基于XML 标准的,所以SOAP 可以用来在不同的计算机体系结构、不同的技术平台、不同的语言和不同的操作系统之间通信。Web服务就是使用SOAP 作为它的标准通信协议。
应用系统通常采用最适合其问题域的软件体系风格,而每一种软件体系风格意味着系统采用不同的对外交互机制,即提供访问系统的机制不同。对于分布应用集成来说,应用系统的这种交互的多样性是导致应用系统相互集成的困难之一。屏蔽交互机制多样性的典型技术包括数据网关、包及适配器技术等。系统间的集成是基础,其更高的层次是在集成的基础上实现协同管理。图2给出了一个分布应用集成协同
图2 分布应用集成的协同管理
协同层包含必要的功能来协同多个系统实现协同的问题解决和提供整体的服务,协同功能控制各个集成系统的执行,管理各个集成系统间的数据流;监控功能订阅各个集成系统产生的事件和信息,并产生更高层次的事件和信息;QoS包括成本、性能、安全、可靠性、可扩展性等信息。管理层提供管理服务,要求集成系统提供方管理系统运行平台、应用系统的部署及商业契约等服务。比较常用的集中协同模型有工作流技术、网格技术及SOA技术等。工作流技术有良好的系统性能;网格技术的目标是协同多种资源解决复杂的科学问题;SOA作为一种新的集成模型,在协同方面更注重协同服务组合。本文主要探讨SOA在分布式应用集成中的应用。
2 SOA与分布应用集成
面向服务的体系结构(Service Oriented Architecture,SOA)来源于早期的基于构件的分布式计算方式,在OMG和IONA的推动下,成为大家所广泛认可的规范。20世纪90年代,CORBA和微软的COM编程模式,促进了SOA的发展。随着Java编程语言、EJB构件模式的发布以及J2EE应用服务市场的成熟,SOA得到了进一步的发展。如果不考虑如何实现,SOA构架如图3所示,由3个参与者和3项基本操作组成。
图3 SOA架构
2.1 Web服务
Web服务是面向服务体系的一个最好实现,Web服务体系使用一系列标准和协议实现相关的功能,如使用WSDL描述服务,使用UDDI发布和查找服务,使用SOAP 协议执行服务调用。
Web服务较其它分布应用集成方法最大的特点是:是完全低耦合的,服务请求者只有在需要服务时才动态地绑定服务提供者,其次,Web服务是可组合和可重用的,再次,采用SOAP交互协议及XML作为消息格式具有跨平台特性。对集成的应用系统也要求较低,只要能够支持SOAP协议及处理XML文档就可以了。
目前SOA集中在对服务组合、服务协同和服务管理方面的研究,其中,服务组合以探讨了包括基于类型、QoS、有向图、Petri-net,本体(ontology)等多种服务组合方法;在服务协同方面也出现了相应的标准,如BEPL、BPEL4WS、WS-Coordination等;服务管理包括通过包装遗留系统为Web 服务的方法来协调管理集成系统和管理Web服务两方面。2.2 基于SOA的分层体系结构
面向服务的集成(Service-Oriented Integration,SOI)将传统的集成对象与开放的、高灵活性的Web Services整合在一起。面向服务的集成提供了一个抽象的接口,通过这些接口,系统可以进行交互,而不是使用低层的协议和自定义的编程接口来规定系统如何与其它系统进行通信。系统只需要以服务的形式出现,选择与该系统交互的其它系统,能够简单发现那些服务,并且在运行的时候或者是设计的时候,与这些服务绑定。
结合2.1节中对Web服务的分析,在解决分布式应用集成中Web服务有着先天的优势。基于SOA的分布式应用集成系统可以分为3层,如图4所示,其中,面向服务的应用又可以分为3层:组件层为服务层提供数据层的封装;服务层为业务层提供统一的接口;业务流程层则提供了业务逻辑规则的实现。每一层次都利用下一层次的实现,而又对上层提供接口。
—247—
—248
—
图4 基于SOA 的分布应用集成分层体系结构
2.3 基于SOA 的J2EE 运行时框架
图4所示体系结构的实现基本上有两种技术:
J2EE 和Dot Net 。本文以J2EE 为例,其运行时框架如图5所示。
图5 基于SOA 的J2EE 运行时框架
图5中,组件层的主要实现为EJB ;服务层的实现主要有3种方式:新建服务,打包的原有服务以及组合服务;这两层都可以利用J2EE 提供的组件和服务来实现,而业务流程层则用BPEL 来实现。BPEL4WS(Business Process Execu- tion Language for Web Service)是一种抽象程度较高的流程描述语言,因为整个BPEL4WS 规范中没有出现任何与底层网
络协议相关的部分,所有的信息传输都是基于SOAP 协议来完成的。BPEL4WS 最大的特点就是它没有创建自己独有的
语言规范,而是基于已广为流传的XML 来创建自己的流程 。
3 结束语
随着软件开发应用示范及应用场景的转变,分布应用集
成已逐步成为构造信息系统的基本保障,它能无约束地连接分布的应用程序,并实现应用程序间的数据和功能的共享,并且这种共享是以不对应用程序本身做大的修改为前提条件的。本文分析了分布式应用集成的基本概念、特征,集成层次以及基本问题,结合SOA 给出了一种分层体系结构及其J2EE 实现。
参考文献
1 Benatallab B, Dumas M, Fauvet M C. Overview of Some Patterns for Architecting and Managing Composite Web Services[J]. ACM SIGecom Exchange, 2002, 3(3): 9-16.
2 Bloomberg J. Principles of SOA[EB/OL]. 2003. http://www. umlch ina.com/News/Content/39.html.
3 徐 罡, 黄 涛, 刘少华. 分布式应用集成核心技术研究综述[J]. 计算机学报, 2005, 28(4): 433-444.
4 覃 正, 原欣伟, 卢致杰, 等. 面向服务的广义企业信息系统架构研究[J]. 计算机应用, 2004, 24(6): 69-71.
5 张 慧, 黄刘生, 张国义, 等. 网格环境下信息集成框架的设计及其应用[J]. 计算机科学, 2004, 31(7).
6 李善平. 本体论研究综述[J]. 计算机研究与发展, 2004, 41(7): 1041-1052.
7 卢志杰, 覃 正. SOA 构架与电子商务应用集成[J]. 计算机应用研究, 2004,21(10): 232-234.
8 刘英丹, 董传良. 利用Web Service 实现企业应用集成[J]. 计算机应用, 2003, 23(7).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(上接第232页) 向量元素之差的绝对值M i ,和对应的权重向量元素相乘,再将乘积求和,所得之和与各个特征向量元素的权重和之比值,公式如下: ∑
∑
=×=
5
1
5
1
=k k
j j
j
i i M
E (6)
应用定义最终得到E=0.196 9,识别率为80.31%。实验证实,本文的方法可以使手写体汉字被较好地识别。
6 总结
本文对手写体汉字识别进行了系统的研究,对于笔画宽度的提取及笔画宽度的归一化方法进行了探讨,提出了一种手写体汉字识别预处理方法,运用数学形态学与八邻域排除法提取出汉字笔画,并对提取出的汉字笔画进行重构,再用二维小波变换提取汉字特征,最后,对手写体汉字与印刷体汉字进行特征匹配,最终有效地识别汉字。经实验得出以下结论:(1)本文是传统方法与新思想的综合运用,手写体汉字识别率较高;(2)本文算法简单,易于仿真实现;(3)手写体汉字字体较潦草、笔画变形较大的情况还有待进一步研究。
参考文献
1 金连文, 黄建成, 尹俊勋. 变形变换及其在手写体汉字整形中的 应用[J]. 中国图像图形学报, 2002, 7(2): 170-175.
2 陈友斌, 丁晓青, 吴佑寿. 一种新的用于手写汉字识别的非线性归一化方法[J].
模式识别与人工智能, 1998, 11(3): 310-317. 3 张世辉. 汉字图像预处理算法的研究及实现[J]. 微机发展, 2003,
13(4): 55-58.
4 金连文, 徐 睿, 龙钧宇. 一种简单有效的手写体汉字笔画粗细归一化方法[DB/OL]. 2003. http:// www.paper.edu.cn.
5 徐 睿, 金连文, 高 学, 等. 基于数学形态学的手写体汉字特征提取方法[C]//第12届全国神经网络学术年会, 北京. 2002: 470- 476.
6 Sonka M, Hlavac V , Boyle R. 图像处理、分析与机器视觉[M]. 2版.北京: 人民邮电出版社, 2003.
7 向世明. Visual C++数字图像与图形处理[M]. 北京: 电子工业出版社, 2002.
8 王建平, 钱自拓. 基于数学形态学的图像汉字笔画细化和提取[J].合肥工业大学学报, 2005, 28(11): 1431-1434.
9 高彦宇, 杨 扬. 基于正交特征的手写体汉字识别方法[J]. 仪器仪表学报, 2003, 24(4): 446-447.
10 王建平, 王志红. 小波和神经网络模式识别技术及再车牌识别中
的应用[D]. 合肥: 合肥工业大学自动化智能研究所, 2003