(计算机应用技术专业论文)soa的关键技术的研究与应用实现.pdf_第1页
(计算机应用技术专业论文)soa的关键技术的研究与应用实现.pdf_第2页
(计算机应用技术专业论文)soa的关键技术的研究与应用实现.pdf_第3页
(计算机应用技术专业论文)soa的关键技术的研究与应用实现.pdf_第4页
(计算机应用技术专业论文)soa的关键技术的研究与应用实现.pdf_第5页
已阅读5页,还剩73页未读 继续免费阅读

(计算机应用技术专业论文)soa的关键技术的研究与应用实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 本论文主要针对一种新型的软件体系架构一一s o a ( s e r v i c eo r i e n t e d a r c h i t e c t u r e ,面向服务的体系架构) 进行了分析与应用研究。随着企业级应用 的不断发展,软件的复杂性急剧增加,面向对象技术已经无法解决重用和可维护 性的问题,于是设计者们提出了基于组件的设计思想,但遗憾的是这种思想并没 有很好地解决软件复杂性问题。今天我们面临的是诸如分布式软件、应用整合、 不同平台、各种各样协议和设备等这样的系统,而采用s o a 可以消除不同协议和 平台带来的问题,实现应用的无缝整合。 首先,论文在介绍s o a 概念的基础上,详细论述了s o a 的特点,通过对这些 特点的分析可以更好地理解s o a 架构的作用和意义,随后给出了s o a 一种基本架 构模型和可能的实现技术。 接着,讨论了面向服务的分析和设计问题,着重论述了如何应用面向服务的 思想来解决实际问题。研究了面向对象的分析与设计( o b j e c t o r i e n t e da n a l y s i s a n dd e s i g n ,o o a d ) 、企业体系结构( e n t e r p r i s ea r c h i t e c t u r e ,e a ) 框架和业 务流程建模( b u s i n e s sp r o c e s sm o d e l i n g ,b p m ) 并将其中的适当原理组合起来, 构成了面向服务的分析与设计( s e r v i c e o r i e n t e da n a l y s i sa n dd e s i g n ,s o a d ) , 并用这种方法分析设计了一个网上购物系统。 然后,论文又对支撑s o a 架构的重要组件e s b ( e n t e r p r i s es e r v i c eb u s ,企 业服务总线) 进行了全面系统地介绍,说明了e s b 在面向服务的体系结构中所扮 演的角色和主要功能。在此基础上设计并实现了其中最重要的服务网关( s e r v i c e g a t e w a y ) 模块,详细地描述了其基本架构、主要作用以及操作流程,给出了基于 j a v a 平台的一种具体实现方案。通过此模块可以连接服务提供者、服务消费者和 注册机制三个模块,来实现s o a 架构中服务间的松散耦合、位置透明和协议独立 等特性。 最后,对全文进行了总结,并提出了进一步研究的方向和内容。 关键词:软件体系架构,面向服务的体系架构,面向服务的分析与设计,企业服 务总线,服务网关 a b s t r a c t a b s t r a c t i ti sm 血l l ys t u d i e do ns e r v i c eo r i e n t e da r c h i t e c t u r e ( s o a ) w h i c hi so n eo ft h e n e ws o f t w a r ea r c h i t e c t u r e s w i t ht h e d e v e l o p m e n to ft h ee n t e r p r i s ea p p l i c a t i o n s , s o f t w a r eg e t sm o r ea n dm o l ec o m p l e x t h eo b j e c to r i e n t e dt e c h n o l o g yc a nn o tr e s o l v e t h ep r o b l e m so fr e u s a b i l i t ya n dm a i n t a i n a b i l i t y s od e s i g n e r sb r o u g h tu pt h ei d e ao f c o m p o n e n to r i e n t e d h o w e v e r , t h i sm e t h o dd o e sn o tw o r kw e l ln e i t h e r t o d a yw ef a c e u pt ot h ep r o b l e m ss u c h a st h ed i s t r i b u t e ds o t t w a l e ,a p p l i c a t i o ni n t e g r a t i o n sa n d d i f f e r e n tp l a t f o r m s ,p r o t o c o l sa n dd e v i c e s s o ac a nr e s o l v ea l lo f t h ea b o v ep r o b l e m s f i r s t l y , s o ai si n t r o d u c e da n dw ed i s c u s st h ec o n c r e t ec h a r a c t e r i s t i c si nd e t a i l t h r o u g ht h ed i s c u s s i o n s w eg e ta b e t t e ru n d e r s t a n d i n g 、i t l lt h ef u n c t i o n sa n dm e a n i n g s o fs o a t h e n ,ab a s i cs o am o d e la n ds o m eo ft h et e c h n o l o g i e sw h i c hc a ni m p l e m e n t s o aa r eb r o u g h t u p s e c o n d l y , s e r v i c e - o r i e n t e da n a l y s i sa n dd e s i g n ( s o a d ) i si n t r o d u c e dw i t ha n e m p h a s i so nh o wt oa n a l y z ea n dd e s i g nt h ep r a c t i c a lp r o b l e m su s i n gt h es e r v i c e o r i e n t e di d e a t h ec o m b i n a t i o n o fo b j e c t o r i e n t e da n a l y s i sa n dd e s i g n ( o o a d ) , e n t e r p r i s ea r c h i t e c t u r e ( e a ) a n db u s i n e s sp r o c e s sm o d e l i n g ( b p i v l ) a r es t u d i e dw h i c h m a k e st h ed e v e l o p m e n tp r o c e s s 、i t hs o am u c he a s i e r t h e na ne - b u s i n e s ss y s t e mi s a n a l y z e da n dd e s i g n e db yu s i n gs o a d t h i sp a p e ri n t r o d u c e st h ee n t e r p r i s es e r v i c eb u s ( e s b ) w h i c hs u p p o r t ss o a t h e n t h er o l e se s bp l a y sa n dt h em a i n l yf u n c t i o n so fe s ba r ei l l u s t r a t e d b a s eo nt h i sw e g i v eo u tt h eb a s i ca r c h i t e c t u r eo f t h es e r v i c eg a t e w a yw h i c hi st h ek e ym o d u l ei ne s b t h em a i nf u n c t i o n sa n do p e r a t i o nf l o w so fe s ba l ed e s c r i b e d ,a n dt h e nar e a l i z a t i o n b a s e do nj a v ap l a t f o r mi sg i y e no u t t h ec o n j u n c t i o no fs e r v i c ep r o v i d e r , s e r v i c e c o n s u m e ra n ds e r v i c er e g i s t e rm a k e st h es e r v i c e so fs o al o o s ec o u p l i n g ,l o c a t i o n t r a n s p a r e n c ya n dp r o t o c o li n d e p e n d e n c e a tl a s t ,w em a k eac o n c l u s i o na n dg i v es o m ed e e pr e s e a r c hf i e l d si nt h ef u t u r e k e y w o r d s :s o f t w a r ea r c h i t e c t u r e ,s e r v i c eo r i e n t e da r c h i t e c t u r e ( s o a ) ,s o a d , e n t e r p r i s es e r v i c eb u s ( e s b ) ,s e r v i c eg a t e w a y i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 雠:襁日期:土口稗月日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:叠韭查= 导师签名:趁 日期:h 6 年玉月厂日 第一章引言 1 1 软件体系结构概述 第一章引言 六十年代的软件危机使软件开发者开始重视软件工程的研究。起初,开发者 们把软件设计的重点放在数据结构和算法的选择上,但是随着软件系统规模越来 越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。软件危机的程 度日益加剧,现有的软件工程方法对此显得力不从心。对于大规模的复杂软件系 统来说,对总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择 变得更加重要。在这种背景下,开发者们认识到软件体系结构的重要性,并认为 对软件体系结构的深入研究将会成为提高生产率和解决软件维护问题的新途径。 自从软件系统首次被分成许多模块,模块之间有相互作用,组合起来有整体 的属性,就具有了体系结构。开发者常常会使用一些体系结构模式作为软件系统 结构设计策略,但他们并没有规范地、明确地表达出来,这样也就无法将他们的 知识与别人交流。软件体系结构是设计抽象的进一步发展,满足了更好地理解软 件系统,更方便地开发更大、更复杂的软件系统的需要。 事实上,软件总是有体系结构的,根本不存在没有体系结构的软件。早期的 结构化程序就是以语句组成模块,模块的聚集和嵌套形成层层调用的程序结构, 也就是体系结构。结构化程序的程序结构和逻辑结构的一致性以及自顶向下开发 方法自然而然地形成了体系结构。由于结构化程序设计时代的程序规模不大,通 过强调结构化程序设计方法学,自顶向下、逐步求精,并注意模块的耦合性就可 以得到相对良好的结构,所以,并未特别研究软件体系结构。 软件体系结构虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网 络体系结构中很多宝贵的思想和方法,最近几年软件体系结构研究已完全独立于 软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。软件 体系结构研究的主要内容涉及软件体系结构描述、软件体系结构风格、软件体系 结构评价和软件体系结构的形式化方法等。解决好软件的重用、质量和维护问题, 是研究软件体系结构的根本目的。 电子科技大学硕士学位论文 1 1 1 软件体系结构的概念 虽然软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没 有一个被业界所公认的定义。许多专家学者从不同角度和不同侧面对软件体系结 构进行了刻画,较为典型的定义有以下几种: ( 1 ) d e w a y n ep e r r y 和a l e xw o l f 曾这样定义:软件体系结构是具有一定形 式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构 件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同 部分组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方 法在其他的定义和方法中基本上得到保持。 ( 2 ) k r u c h t e n 指出,软件体系结构有四个角度。它们从不同方面对系统进行 描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解 与层次结构;运行角度描述了一个系统的动态结构:代码角度描述了各种代码和 库函数在开发环境中的组织。 ( 3 ) h a y e sr o t h 则认为软件体系结构是一个抽象的系统规范,主要包括用其 行为来描述的功能构件和构件之间的相互连接、接口和关系。 ( 4 ) d a v i d6 a r l a n 和d e w n ep e r r y 在i e e e 软件工程学报上又采用如下的定 义:软件体系结构是一个程序系统各构件的结构,它们之间的相互关系以及进 行设计的原则和随时间进化的指导方针。 ( 5 ) b a r r yb o e h m 和他的学生提出,一个软件体系结构包括一个软件和系统 构件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这 一构件,互联和约束能够满足系统需求。 ( 6 ) 1 9 9 7 年,b a s s 、c t e m e n t s 和k a z m a n 在实用软件体系结构一书中给 出如下的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、 软件构件的外部的可见特性及其相互关系。其中,“软件外部的可见特性”是指 软件构件提供的服务、性能、特性、错误处理、共享资源使用等。 ( 7 ) m a r ys h a w 和d a v i dc a r l a n 认为软件体系结构是软件设计过程中的一个 层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括 总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能, 设计元素的组织,规模和性能,在各设计方案间进行选择等。软件体系结构处理 算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织 和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理 第一章引言 分布与合成,设计方案的选择、评估与实现等。 综上所述,在本文以后的章节中,如果不特别指出,我们将使用软件体系结 构的下列定义:“软件体系结构为软件系统提供了一个结构、行为和属性的高级 抽象,由构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以 及这些模式的约束组成,描绘了较高层次上系统组件以及它们之间的交互方式”。 1 1 2 软件体系结构发展趋势 上个世纪9 0 年代中期面向对象开发技术日趋成熟,由于对象是对数据与基于 数据之上的操作的封装,因而在面向对象开发的方法中,数据流设计与控制流设 计统一为对象建模。1 9 9 7 年又出现了统一建模语言( u m l ) ,它从功能模型( 用例 视图) 、静态模型( 类图、对象图、构件图和包图) 、动态模型( 协作图、顺序 图、状态图和活动图) 和配置模型( 配置图) 描述应用系统的结构。 九十年代后期则是基于组件的软件开发阶段,随着软件开发规模的扩大,在 涉及分布式、异构等复杂特征的环境中,代码级别的重用性差,可维护性差,效 率低的弱点是不可避免的显现出来,因此人们以架构运行环境( 如n e t ,j 2 e e 等) 来提供完善的支撑平台,从而把开发者解放出来,更其专注于业务核心的开发。 而这些业务功能以组件的形式发布运行在架构环境中。软件开发的重用模式也上 升到业务组件的级别。该阶段以过程为中心,强调软件开发采用组件化技术和体 系结构技术,要求开发的软件具有很强的自适应性、互操作性、可扩展性和重用 性。在这个阶段中,软件体系架构已经作为一个明确的文档和中间件产品存在于 软件开发过程中。从以上的论述可知,软件体系结构的发展历史就是人们不断追 求更高的抽象、封装和模块化的过程。图卜1 展现了软件体系结构的发展历程: 图卜1 软件体系结构的发展 电子科技大学硕士学位论文 伴随着大规模企业级应用的不断发展,为了减少异构性、互操作性和不断改 变的要求等问题,一种新型的软件体系架构应运而生面向服务的体系架构 ( s e r v i c eo r i e n t e da r c h i t e c t u r e ,s o a ) ,它是基于面向对象技术和面向组件 技术之上更高级别的抽象,三者的结构层次如图卜2 所示: 图i - 2 软件体系结构层次图 1 2s o a 研究现状和发展态势 1 2 1 国外研究状况 在国外,s o a 并不是一个新名词,早在1 9 9 6 年就有人提出了此概念。但是由 于当时的技术不足以从真正意义上支持实现s o a ,所以并没有引起人们的足够重 视。随着网络技术的不断发展,特别是w e bs e r v i c e s 技术的日趋成熟,s o a 被作 为“现代应用开发领域最重要的课题”再次提出,不仅许多高校和科研机构都对 此表现出极大的兴趣,而且以i b m 和b e a 为代表的各大i t 厂商的纷纷入s o a 的行 列,并声称自己的产品w e b s p h e r e 5 0 ( i b m ) 和w e b l o g i c 8 0 ( b e a ) 可以帮助用 户实现基于s o a 的企业级系统。虽然如此,s o a 发展到今天远未达到完善成熟的地 步,就连s o a 的基本概念迄今为止还没有一个被业界所公认的定义,研究工作也 都大多处于理论研究阶段。 1 2 2 国内研究状况 在国内,s o a 还是一个新鲜的事物,虽然近两年来关于s o a 的报道经常见诸 各种媒体,但是炒作概念的成分居多,并没有多大的理论意义与实用价值。科研 4 第一章引言 机构的理论研究成果也并不多,关于s o a 的著作更是少见。在实践领域,至今还 没有那一家国内企业实现过基于s o a 的应用系统。由此可见,国内对s o a 的研究 还处于起步阶段。 1 2 3s o a 的发展态势 s o a 作为一种刚刚兴起的技术,虽然有一定的不确定性,但是这并不能阻碍 s o a 技术的不断发展。作为一种新型的软件开发体系结构,s o a 具有无可比拟的优 势,符合按需计算的发展潮流,尤其适用于企业级的应用开发。随着互联网络的 进一步发展,分布式应用的不断普及,s o a 的应用会更加的普遍并被人们所接受, 成为继面向对象、面向组件之后的新的设计方式。因此可以预见,s o a 的发展会对 软件设计思想产生很大的影响并对分布式企业应用的不断普及起到重大的促进作 用。 1 3 本文选题依据及研究意义 通过上一小节对s o a 研究的国内外现状的分析,本人认为对s o a 的关键技术 的研究与应用实现具有较强的理论意义,同时,其中关键模块的设计实现对现代 分布式的企业级应用开发也有很强的实用价值。 本论文具有以下研究意义: 1 s o a 对软件体系结构的研究有重要的意义。它是对现有体系结构的继承和 发展。较好的解决了面向对象和面向组件分析与设计方法无法解决可重用 和可维护性的问题,并消除了不同协议和软硬件平台带来的整合问题。 2 s o a 对分布式的企业级应用开发有很强的现实指导意义。传统的c s 架构 已经无法满足现代企业级应用的要求,而s o a 架构使i t 环境可以更加灵 活且更快地响应不断改变的业务需求,同时使异构系统和应用程序尽可能 无缝地进行通信,达到削减成本和最大限度地利用现有技术的目的。 1 4 本文研究的目标和内容 论文目标: 1 通过对s o a 基本概念和原理的论述,从而对s o a 有更加全面和深刻的理解。 电子科技大学硕士学位论文 2 通过一个简单实例说明面向服务的分析与设计的步骤和方法。 3 设计实现服务网关模块,使其对今后企业级应用有指导意义。 论文的主要研究内容: 1 深入理解面向服务的体系结构的概念及原理。 2 实现面向服务的分析与设计,即服务如何划分,服务粒度大小的决定,怎 样使服务内部高内聚,而服务之间又使松散耦合。 3 服务总线中服务网关( s e r v i c eg a t e w a y ) 模块的研究与设计实现,该模 块是s o a 中重要的重要组件。负责完成消息格式的转换、服务的路由和协 议间的转换等功能。 1 5 本章小结 作为本文的第一章,简要介绍了软件体系结构的概念和发展历程,从而引出 了文章的主题s o a ,接着讨论了s o a 研究的理论和现实意义,以及对软件开发 可能起到的关键作用。最后,给出了本文研究的目标和主要内容。 6 第二章面向服务的体系架构( s o a ) 2 1s o a 概述 第二章面向服务的体系架构( s o a ) 在1 9 9 6 年,g a r t n e rg r o u p 就提出了s o a ( s e r v i c eo r i e n t e da r c h i t e c t u r e , 面向服务的体系结构) 的概念,但是那个时候软件技术还不足以从真正意义上支持 企业实现s o a 。随着网络技术的不断发展,在2 0 0 2 年1 2 月,g a r t n e r 再次提出了 s o a 是“现代应用开发领域最重要的课题”,并预计到2 0 0 8 年,s o a 将成为占有 绝对优势的软件工程实践方法。 2 1 1s o a 的概念 从总体上来讲,s o h 是一种结构模型,它可以根据需求并通过网络对松散耦合 的粗粒度应用组件进行分布式部署、组合和使用。下面给出业界一些关于s o a 的 定义: s e r v i c e a r c h i t e c t u r e c o m 将s o a 定义为:“本质上是服务的集合。服务间彼 此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行 某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、 独立于其他服务所处环境和状态的函数”。 l o o s e l y c o u p l e d c o m 将s o a 定义为:“按需连接资源的系统。在s o a 中,资源 被作为可通过标准方式访问的独立服务,提供给网络中的其他成员。与传统的系 统结构相比,s o a 规定了资源间更为灵活的松散耦合关系”。 i b m 认为:“s o a 展现出比w e bs e r v i c e 更加广泛的应用前景,s o a 是一种构建 能够交付终端用户问服务或构建其他服务的功能组件”。 s o a 解决方案由可重用的服务组成,带有定义良好且符合标准的己发布接口。 s o a 提供了一种机制,通过这种机制,可以集成现有的遗留应用程序,而不管它们 的平台或语言。 通过前面的论述,我们将面向服务的体系结构( s e r v i c e o r i e n t e d a r c h i t e c t u r e ,s o a ) 定义如下:“面向服务的体系结构是一个组件模型,它将应 用程序的不同功能单元( 称为服务) 通过这些服务之间定义良好的接e l 和契约联 电子科技大学硕士学位论文 系起来,接i :1 是采用中立的方式进行定义的,独立于实现服务的硬件平台、操作 系统和编程语言,使得构建在各种这样的系统中的服务可以用一种统一和通用的 方式进行交互。” 2 1 2s o a 的特性 虽然不同组织或个人对s o a 有着不同的理解,但是仍然可以从上述的定义中 看到s o a 的几个关键特性: 服务是可发现和动态绑定的 服务是自包含和可模块化的 服务的互操作性 服务是松耦合的 服务有可网络寻址的接口 服务有粗粒度的接口 服务位置的透明性 服务有自恢复功能 服务具有可组合性 1 服务的可发现和动态绑定 s o a 支持服务发现的概念,服务消费者需要在运行时根据一定的标准来发现可 用的服务,服务消费者查询服务注册机制来得到服务的位置信息。下面通过一个 实例来解释服务的发现和动态绑定,假设一个银行应用的用户查询注册机制以获 得所有执行信用卡认证的服务,注册机制返回支持该服务的所有实体。这些实体 中同时也包含有关该服务的信息,如交易费用等。消费者从服务列表中选择费用 最低的服务,并使用注册机制实体的指针来绑定信用卡服务的提供者。服务描述 包括执行服务需要的所有参数,消费者用数据形式格式化请求信息,以目录指针 提供的描述为基础,将该请求消息绑定到服务期望的传输类型并发送。服务提供 者执行信用卡认证并返回一个同样由服务描述指定格式的响应消息。服务提供者 和消费者之间仅仅通过第三方注册机制的契约规则相依赖,并且这种依赖关系是 运行时依赖而不是编译时依赖,所需要的关于服务的全部信息都也是在运行时获 得并使用的。 上面的例子说明了服务消费者如何动态的执行服务,用户不需要任何关于服 第二章面向服务的体系架构( s o a ) 务的编译时信息,服务接口也是可动态发现的,消息的构建也是动态的。取消编 译时依赖提高了系统的可维护性,因为消费者不需要在每次接口变化后重新绑定 新的接口,这种方法是极其有效的,服务消费者不需要知道服务请求消息的格式、 响应消息的格式和服务的位置信息。上例中交易费用可能随时变动,但消费者仍 然可以确定得到最低的价格。 2 服务是自包含和可模块化的 s o a 的一个最重要的方面就是模块化的概念。服务支持一个接口集,接口集中 的这些接口具有内聚性,即在同一模块环境下它们应该彼此相关。服务设计中应 该坚持模块化的原则,这样可以使服务间通过很少的依赖关系进行组合。下面列 举了一些模块化的准则: 1 ) 模块的可分解性 模块的可分解性是指应用可以被分解成许多小模块的能力,每个模 块代表应用中一个单独的、不同的功能。在自顶向下的设计中将一个大 的应用迭代分解成小的应用,例如:银行服务可以被分解成定期储蓄账 号、活期储蓄账号和客户服务。分解的主要目的是可重用,即在不同的 环境中重用模块。 2 ) 模块的可组合性 服务模块的可组合性是指服务组件可以作为一个整体与其它服务自 由的组合成新的服务系统。服务设计者应该充分考虑服务的独立性,以 便在完全不同的系统中进行重用。 3 ) 模块的可理解性 服务模块的可理解性是指用户在不了解其它服务的情况下理解当前 服务功能的能力。例如:某个银行应用有一个没有实现存款功能的支票 账号服务,它只能依赖于其它的存款服务,但用户并不用关心到底使用 那个存款服务,而只是使用该支票账号服务。模块的可理解性对于服务 来说至关重要,因为任何服务消费者可以在任何时间查找并使用服务, 如果服务模块不具备功能方面的可理解性,用户将很难决定是否使用该 应用。 4 ) 模块的连续性 服务模块的连续性指的是某个服务的改变将影响其它服务或服务消 9 电子科技大学硕士学位论文 费者。没有充分隐藏服务实现细节的接口在需要改变时将引起多米诺效 应,在服务内部实现改变时要求其它服务和应用也要作相应的改变,因 此每个服务都必须隐藏其内部设计实现的具体信息。 5 ) 模块具有自保护性 服务模块的自保护性是指服务中的异常条件不会级联影响其它的服 务以及服务消费者。例如:支票账号服务中的一个错误导致无效数据被 存储在数据库的表中,这就将影响到使用该数据表的其它服务。服务操 作中的错误不能影响用户、其它服务、内部数据状态和服务消费者之间 的契约。 3 服务的互操作性 s o a 强调服务间的互操作性,即系统跨越不同平台和编程语言进行通信的能 力。每一个服务都提供可以通过连接适配器调用的接口,连接适配器由服务潜在 客户能够理解的协议和数据格式组成,支持标准协议和数据格式的技术通过将不 同平台特性和编程语言映射到一个中介规范来实现。例如:w e b 服务就是一个在不 同系统间通信的中介规范,j a x r p c 和j a x m 将j a v a 数据类型映射到s o a p 。 4 服务是松耦合的 耦合是指模块间的相互依赖情况,服务之间的耦合程度主要取决于两个因素: 第一,服务提供者的调用和实现方式;第二,消费者对于如何查找和调用服务。 对于服务来说,位置和接口定义( 包括数据类型定义) 组成了耦合。一般情况下 有两种耦合方式:松散耦合和紧密耦合。松散耦合使各模块问有很强的独立性, 而紧密耦合情况下各模块相互紧密依赖。任何一种软件体系架构都力争达到模块 间的松散耦合,系统的耦合度直接影响到它的可修改性,系统的耦合度越高,其 修改越复杂和困难。反之,如果耦合度很低,则一个模块的修改将很少会影响到 其它的服务。 在松散耦合中,服务提供者使用一种标准定义语言来定义和发布其服务接口。 接口定义了服务消费者和服务提供者之间的调用契约。只要服务接口保持一致, 就可以修改服务提供者的实现而不影响服务消费者的调用。 s o a 通过服务契约和绑定实现松散耦合,消费者通过第三方注册机制来获得它 所需要的服务信息,注册机制返回所有的符合条件的可用服务。消费者基于注册 机制提供的服务描述来选择合适的服务,通过传输机制与服务进行绑定并调用其 第二章面向服务的体系架构( s o a ) 中的方法。服务消费者并不直接依赖服务的实现而是依赖服务契约。 5 服务有可网络寻址的接口 网络在s o a 概念中扮演者重要角色,每个服务都要有可网络寻址的接口。网 络上的消费者必须能够通过网络调用服务,同时网络也使服务在任意时刻被任意 请求者重用成为可能。只有服务支持网络寻址接口才能使应用具有组合不同机器 上的可重用服务的能力。同时网络也使服务具有了位置无关性特点。 当然,也可以通过本地接口访问服务,但前提是服务的提供者和消费者必须 在同一主机上。这样的方式能够提高了效率,在纯粹的面向对象的设计中,属性 和方法被封装到对象中,这样的设计对于同一主机上的应用是合适的。但是对于 基于网络的分布式系统来说,不可能要求所有服务都在同一主机上,势必要通过 网络进行连接。 6 服务有粗粒度的接口 粒度概念以两种方式应用于服务:第一,应用于整个的服务实现域范围内; 第二,应用于接口实现的每个方法域范围内。粒度级别是相关的,例如,如果一 个实现银行系统全部功能的服务,我们认为它是粗粒度的,但如果只支持信用卡 的认证服务我们就认为它是细粒度的。此外,如果一个查询客户信息的方法返回 其中包括地址信息在内的所有客户信息,比仅仅返回地址信息的方法是粗粒度的。 因为访问分布式对象需要通过网络,细粒度服务问的频繁调用必然导致性能的急 剧下降,所以在分布式应用中,为了提高效率,应当尽量将服务的接口设计为粗 粒度。 7 服务位置的透明性 位置的透明性是面向服务的体系结构的另一个重要特征。消费者定位服务之 前不需要知道服务的具体位置,服务在运行时查找和动态绑定使得服务实现可以 改变位置而不影响用户,这样提高了服务的可用性和性能。 面向对象的核心设计思想是实现和接口的分离,这就意味着对象的接口和实 现间具有很强的独立性。这种设计思想的源动力是控制对象间的相互依赖性,面 向服务的体系结构将这一原理进一步深入,降低了消费者对契约的依赖性,通过 动态绑定降低了服务间的依赖性。 8 服务有自恢复功能 随着现代分布式系统的规模和复杂性的不断增加,系统的错误恢复能力变得 电子科技大学硕士学位论文 越来越重要,自恢复系统可以在执行时不用人为干预而自动进行错误恢复。可靠 性是度量系统面对干扰时执行情况好坏的标准,在面向服务的体系结构中,服务 可能随时发生改变,特别是在多个组织问通过i n t e r n e t 相连时更为突出。 自恢复性依赖下面几个因素: 1 ) 可靠性依赖于硬件的容错能力,网络必须允许运行时的跨系统的动态连 接,幸运的是现代网络协议先天性的具有这一能力。 2 ) 支持动态绑定和运行时组件执行的体系结构具有比以前其它结构更好的 自恢复能力。在面向服务的体系结构中,如果一个服务失效,用户可以查 找、绑定并执行其它服务提供的具有类似功能的服务接口。此外,基于服 务的系统需要接口与实现的分离,实现可以是多种多样的。例如,一个服 务实现可以运行在一个集群环境中,一旦某一个服务失效,其它的实例将 为用户提供服务。只有在用户仅与服务接口交互而不是与具体实现相关时 才具有这种能力,这是所有面向服务体系结构的基本属性。 9 服务具有可组合性 服务的组合性涉及到模块化结构,模块化结构使服务可以被组装成开发者在 设计服务时没有意识到的应用,使用已经存在并测试好的服务模块大大提高了系 统的质量以及开发效率。 服务可以通过以下三种方式进行组合: 1 ) 应用组合。应用是个典型的服务、组件和应用逻辑的组合,它们为了一 个明确的目的绑定在一起。 2 ) 服务联合。服务联合是一个大的服务域中被统一管理的服务集合。 3 ) 服务编排。服务编排是影响组织中一个或多个服务的单个事件的执行过 程,有时称为业务过程,它由多步组成,每一步都是一个服务调用,如果 某一服务调用失败,那么整个事件将被回滚,返回事件执行前的状态 因为服务可以被组合成事务性的应用、联合或服务编排,所以服务方法本身 必须是事务性的,也就是说它们自身不能执行数据的提交。事务的编排由第三方 实体执行,该实体负责探测服务方法是否成功执行,如果失败则将已经执行的服 务回滚并返回请求执行前的状态。 第二章面向服务的体系架构( s o a ) 2 2s o a 的基本架构 s o a 的基本体系架构由以下四部分组成: 1 服务提供者( s e r v i c ep r o v i d e r ) 服务提供者是一个可通过网络寻址的实体,它接受和执行来自消费者 的请求。它将自己的服务和接口契约发布到服务注册中心,以便服务使用 者可以发现和访问该服务。它主要实现以下功能: a ) 定义可提供的服务功能 b ) 设计并实现这些功能 c ) 用w s d l ( w e bs e r v i c ed e f i n i t i o nl a n g u a g e ) 描述这些服务,并用 u d d i 在服务注册表项中发布w s d l 文档 2 注册机制( r e g i s t e r ) 服务注册机制是一个包含可用服务的网络可寻址的目录,它是接收并 存储服务契约的实体,供服务消费者定位服务之用。主要实现以下功能: a ) 增加、删除或修改已发布服务提供的服务数据 b ) 按用户的请求从注册表中查询服务数据 3 服务消费者( s e r v i c ec o n s u m e r ) 服务消费者可以是一个请求服务的应用、服务或者其它类型的软件模 块,它从注册机制中定位其需要的服务,并通过传输机制来绑定该服务, 然后通过传递契约规定格式的请求来执行服务功能。该模块主要完成以下 功能: a ) 发现提供所需服务的w s d l 文档,通常通过访问服务注册表项来实现 b ) 在w s d l 的基础上,通过s o a p 协议来与要访问的服务通信 4 服务契约( c o n t r a c t ) 服务契约是服务消费者和服务提供者间交互方式的规范,指明了服务 请求和响应的格式。 其基本架构如图2 1 所示: 电子科技大学硕士学位论文 图2 - is o a 的基本架构模型 服务的提供者与服务的消费者是彼此分开的,注册机制中的服务信息位于两 者之间,它将服务提供者所提供的服务按一定的标准组织并分类,并向消费者发 布服务接口,消费者使用查询功能发现提供者。服务提供者与服务消费者通过事 先定义好的契约进行交互。 2 3s o a 的操作 通过图2 一l 可知,s o a 包括三种主要的操作: 查找服务( f i n d ) : 服务消费者依据服务契约来查找和定位服务,查找服务的操作由用户 或者其它的服务发起: 注册服务( r e g i s t e r ) : 服务提供者将服务的信息发布到服务注册机制中,服务的信息包括与 该服务交互必要的所有内容,如网络位置,传输协议以及消息格式等: 绑定并执行服务( b i n da n de x e c u t e ) : 一旦服务请求发现合适的服务,它将根据服务描述中的信息在运行时 第二章面向服务的体系架构( s o a ) 直接激活服务。 2 4s o a 的优点 在现代企业级应用中采用面向服务体系结构将给我们带来几方面的好处,有 助于在今天竞争激烈的商业环境中取得成功: 1 ) 利用现有的资产。 s o a 提供了一个更高级抽象层,通过这个抽象层,可以将业务构造成 现有服务的集合。使用这种新的服务只需要知道它的接口和名称,服务的 内部细节以及组成服务的组件之间的数据复杂性都对外界隐藏了。这种组 件的匿名性使组织能够利用现有的投资,从而通过合并构建在不同的机器 上、运行在不同的操作系统中和用不同的编程语言开发的组件来创建服 务。组织可以继续从现有的资源中获益,而不必重新构建系统。 2 ) 更易于集成和管理。 在面向服务的体系结构中,集成点是规范而不是实现。这提供了实现 的透明性,并将因为基础设施和实现发生的改变带来的影响降到最低限 度。通过提供针对基于完全不同的系统构建的服务规范,使应用集成变得 更加易于管理。特别是当多个企业一起协作时,这会变得更加重要。 3 ) 更快的响应和上市速度。 通过现有的服务组合新服务的能力为那些需要灵活响应商业要求的 组织提供了帮助。利用现有的组件和服务,可以缩短软件开发生命周期( 包 括收集需求、进行设计、开发和测试) 。这使得可以快速地开发新的业务 服务,减少了上市准备时间。 4 ) 持续改进业务过程 s o a 允许清晰地表示流程流,这些流程流通过在特定的业务服务中 使用的组件的顺序来标识,这给用户提供了监视业务操作的理想环境。 业务建模反映在业务服务中,流程操纵是以一定的模式重组部件来实现 的。这将进一步允许更改流程流,而同时监视产生的结果,因此促进了 持续改进。 5 ) 降低风险 重用现有的组件降低了在创建新的业务服务的过程中带来的风险, 电子科技大学硕士学位论文 同时也可以减少了维护和管理支持服务的基础架构的负担。 2 5 实现s o a 的关键技术 2 5 1x m l 简介 ) ( m l ( e x t e n s i b l em a r k u pl a n g u a g e ,可扩充标记语言) 标准是一个基于文本 的w o r l dw i d ew e b 组织( w 3 c ) 规范的标记语言。与h t m l 使用标签来描述外观和数 据不同,x m l 严格地定义可移植的结构化数据。它可以作为定义数据描述语言的语 言,例如标记语法或词汇、交换格式和通讯协议和契约等。 ) ( m l 作为一种标记语言,有以下特点: 1 ) 可扩展性:标记是面向内容的,用户可以自定义所需要且有实际意义的标 记。 2 ) 具有结构化特性:x m l 文档的实现是一种树形的结构,通过标签的嵌套, x 札可以描述任意层次的文档结构。 3 ) 内容与表示的分离性:) ( m l 文档只是对内容的描述,它的外观则需要通过 x s l ( x m l 模式语言) 来描述。 4 ) 平台无关性:x m l 是一种自描述的语言,数据本身就己经包含了元数据。 另外x m l 是基于纯文本的语言,能够被各种平台支持。 在面向服务的体系架构中的关键问题就是服务如何描述,服务描述的重点是 要让服务请求者能够更好的理解服务。在服务描述中,x m l 模式是基本数据类型的 机制,所有服务描述技术都使用捌l 来表示。s o a 中服务的许多强大的功能均来自 x m l 的强大能力。 2 5 2w e b 服务描述语言( w s d l ) 概述 w s d l ( w e bs e r v i c e sd e s c r i p t i o nl a n g u a g e ,w e b 服务描述语言) 是一个提供 描述服务i d l ( 接口定义语言) 标准方法的x 虬词汇,它是理解s o a 中服务的关键。 w s d l 是融合n a s s l ( i b m ) 和s d l ( m i c r o s o f t ) 之间的活动产物,它为服务提供者提 供了描述远程方法调用( r m i ) 的请求消息和响应消息的格式的一个简单方法。w s d l 不依赖于底层的协议和编码要求,它是一种抽象的语言,利用各自的参数和数据 类型来定义被发布的操作。该语言还涉及了服务的位置和绑定细节的定义,开发 第二章面向服务的体系架构( s o a ) 者用w s d l 描述一组s o a 中服务所支持的操作,包括:操作输入和输出所期望的对 象类型,具体网络的格式约定,以及数据编码的方案,这一层构成了服务接口的 核心定义。w s d l 文档类型还可以帮助在u d d i 注册中心发布和查找服务描述,w s d l 文档被分为两种类型:服务接口( s e r v i c ei n t e r f a c e ) 和服务实现(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论