




已阅读5页,还剩65页未读, 继续免费阅读
(计算机应用技术专业论文)面向服务的分布式协同系统研究.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 成功应用的案例还不多,在国内很少看到s o a 的应用。 本文从s o a 的基本概念、定义、产生的发展入手,对其进行了深入的研究; 从抽象、建模、分层、设计模式、过程支撑等几个方面分析了面向服务架构的 设计,并对实现s o a 的关键技术进行了介绍;然后将s o a 架构应用于协同系 统,研究面向服务的协同系统中的协作模型、协作控制机制、通信技术、系统 结构等关键技术。 最后,实现了一个基于s o a 架构的工作流系统一s d w s 。它是一个典型 的协同应用系统,支持多人异地异步的进行文档管理的任务。s d w s 将协同任 务建立在服务库的基础上,通过查找服务来识别和定位各自的任务,达到最终 共同完成任务的目的。在任务问、工作流间、服务间实现远程互操作,使软件 架构上具有较高的可扩展性。 本文对面向服务的协同系统的研究具有理论意义和实用价值。通过面向服 务的技术完成了协同任务在分布式环境中的发布、识别、远程调用等操作,解 决了协同应用系统中的协作控制、群组通信、安全控制、应用共享等难题。同 时,本文对s o a 的实现技术紧跟当前信息技术的发展方向,对同类课题的研究 具有借鉴意义。 关键词:软件架构,面向服务的架构,面向服务的设计,计算机支持的协同工作, 工作流管理系统 武汉理工大学硕士学位论文 a b s t r a c t 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 ) i so n eo ft h en e w l yd e v e l o p e ds o f t w a r e a r c h i t e c t u r e s w h i c hu t i l i z e ss o m ee x i s t i n gt e c h n o l o g i e st oc f e 绷嚣af l e x i b l ea n d e x t e n a i b l ef r a m e w o r kt oe n a b l ed i s t r i b u t e da p p l i c a t i o n s t h em a i np u r p o s eo fs o ai s t oe l i m i n a t et h ei n t e g r a t i n gp r o b l e m so fd i f f e r e n tp r o t o c o l sa n dp l a t f o r m ss oa st o r e s o l v et h ed i f f i c u l t i e so fs o f t w a r er c 璐e s o ah a sb e c o m eah o t s p o to fr e s e a r c hf i e l d s f o rm a n yc o r p o r a t i o n sa n di n t e r n a t i o n a ls t a n d a r d i z a t i o no r g a n i z a t i o n sh a v ei n v e s t e da g r e a td e a lo fr e s o u r c e st or e s e a r c hi t s o ah a sb e e nd e v e l o p i n gf r o mt h er c s e a r e h i n g f i e l d st oaf i c l do fs u p p o r t i n gp r a c t i c ea p p l i c a t i o n s h o w e v e r ,t h er e s u l t so fs o ar e s e a r c hw e r ed i s p e r s e d i t sf u r t h e rd e v e l o p m e n t w a sl i m i t e dt h a ti tl a c k sau n i f o r ms t a n d a r ds ot h a ts u c c e s s f u le x a m p l e so fs o a w e r e h a r d l ys e e n , a n dt h ea p p l i c a t i o n sw e r ea l s ov e r yr a r ei nc h i n a t h i st h e s i sd e s c r i b e dt h e d e t a i i so fs o a , f r o mi t sf u n d a m e n t a lc o n c e p t s , d e f i n i t i o n s ,a p p e a r a n c ea n dd e v e l o p m e n t a n de x p l a i n e dh o wt oi m p l e m e n tt h e 辩w i c eo r i e n t e da r c h i t e c t u r ew i t hi t sk e yt e c h n o l o g i e si nt h e 镐p e c t so fa b s t r a c t i o n , m o d e l i n g , h j e m r c h y ,d e s i g np a t t e r n s , s u p p o r t i n gp r o c e s s i na d d i t i o n , t h ek e y i m p l e m e n t i n gt e e h n o l o g e sw e r ei n t r o d u c e d l a t e r , t h ew r i t e ri n t e g r a t e ds o aa n d c s c wt od e s i g nns e w i c eo r i e n t e dc o o p e r a t i v es y s t e m t h ec o o p e r a t i v em o d e l m e c h a n i s mo f c o o p e r a t i v ec o n t r o l ,c o m m u n i c a t i o nt e c h n o l o g i e s a n d s y s t e m a r c h i t e c t u r ew e r ea l s ob e e nr e s e a r c h e d f i n a l l y , t h ep a p e ri m p l e m e n t e das o a - b a s e dw o r k f l o wm a n a g e m e n ts y s t e m : s d w s w h i c hi sac l a s s i c a lc o o p e r a t i v es y s t e m i ts u p p o r t st h et a s l 【so fd o c u m e n t a r y m a n a g e m e n tb ym u l t i - p e r s o n sr e m o t e l y , a s y n c h r o n o u s l y t h es d w sc r e a t e st h e c o o p e r a t i v et a s k s0 1 1t h eb a s i so fa r v i c er e p o s i t o r y , w h i c he n a b l e st h es e n r i c e i d e n t i f y i n g , s e e k i n ga n dl o c a t i o nt od ot h et a s k so fo n e so w na n df u l f i l lt h ef m a u y d e s t i n a t i o n t h er e m o t ei n t e r o p e r a t i o n se x i s t e db e t w e e nt h et a s k s ,w o r k f l o w sa n d 蛐i c e st oi m p l e m e n tt h eh i g h l ye x t e n s i b l es o f t w a r ea r c h i t e c t u r e t h er e s e a r c ho ns e r v i c e - o r i e n t e dc o l l a b o r a t i v es y s t e mo ft h i st h e s i sh a sa c a d e m i c s i g n i f i c a n c ea n dp r a c t i c a lw u r t h i n e 鼹w i t ht h es e r v i c e - o r i e n t e dt e c h n o l o g y , t h e 武汉理工大学硕士学位论文 o p e r a t i o n so fp u b l i s h , i d e n t i f i c a t i o n , r e m o t ec a l lo fc o l l a b o r a t i v et a s k sw e r ed o n e ,a n d t h e p r o b l e m s o fc o l l a b o r a t i v ec o n t r o l ,g r o u pc o m m u n i c a t i o n ,s e c u r i t yc o n t r o l , i n f o r m a t i o ns h a r ew e r ed e a l t ht h em e a n w h i l e t h ei m p l e m e n t i n gt e c h n o l o g yo fs o a w a su p t o d a t ei nt h i st h e s i s ,w h i c hc a nb er e f e r r e di ns i m i l a rr e s e a r c h e s 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 0 a ) s e r v i c e o r i e n t e dd e s i g n , c o m p u t e rs u p p o r t e dc o o p e r a t i v ew o r k ( c s c w ) , w o r k f l o wm a n a g e m e n ts y s t e m ( w f m s ) h i 武汉理工大学硕士学位论文 1 1 软件架构概述 1 1 1 定义 第1 章引言 早期的软件开发者们的重点在算法和数据结构的选择上,但随着软件系统 的规模越来越大、复杂度越来越商,整个系统的结构和规格越来越难以控制, 使软件危机日益加剧,现有的软件技术已对此无能为力时,学者们将目光投向 了软件架构( s o f t w a r ea r c h i t e c t u r e ) 。 由于模块与模块间的相互依赖与相互作用,软件系统才能成为整体运行起 来,这就出现了软件的架构。早期的结构化程序是以语句组成模块,模块的聚 集和嵌套形成层层调用的程序结构,也就是体系结构。结构化程序的程序结构 和逻辑结构的一致性以及自顶向下开发方法自然而然地形成了体系结构。由于 结构化程序设计时代的程序规模不大,通过强调结构化程序设计方法学,自顶 向下、逐步求精,并注意模块的祸合性就可以得到相对良好的结构。但这种方 法学并不适合于现代大规模软件系统的开发,最近几年,软件架构已成为新的 研究方向和独立学科分支得到人们的重视。 软件架构是一系列相关的抽象模式,用于指导大型软件系统各个方面的设 计。它是一个系统的草图,描述的对象是直接构成系统的抽象组件。各个组件 之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象 组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组 件之间的连接通常用接口来实现【n 。 迄今为止,软件架构还没有一个统一的定义。本文引用i e e ew o r k i n gg r o u p 0 1 1a r c h i t e c t u r e 的解释:“系统在其环境中的最高层概念”。从这个定义上考虑, 架构不仅仅是结构,它还应包括“符合”系统完整性、经济约束条件、审美需 求和样式。它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境 中对系统进行整体考虑,即同时注重对外部的考虑1 2 l 。 在i e e e l 4 7 1 中,对软件架构的表述如图1 1 所示。 武汉理工大学硕士学位论文 图1 1i e e e1 4 7 1 对软件架构的表述 图中描述了软件系统的一些相关概念,可以从中看出软件架构在整个系统 中的所处的位置,以及和系统开发的关系。 介于软件架构的特殊地位,在建造一个系统之前就必须对它的软件架构进 行详细设计及建造,以软件架构作为后续工作的基石,一旦这个架构决定下来 就不应轻易的进行更改,这是关系到整个系统设计的成败。因此,软件架构的 设计,必须经过非常慎重的研究和考察例。 1 1 2 软件架构的发展 软件架构的概念起源于人们在长期的历史过程中在建筑学所积累起来的知 识。计算机软件的历史开始于五十年代,历史非常短暂,而相比之下建筑工程 则从石器时代就开始了,人类在几千年的建筑设计实践中积累了大量的经验和 教训。建筑设计基本上包含两点,一是建筑风格,二是建筑模式。软件架构与 其类似。 在上世纪六十年代,戴克斯特拉等就已经涉及软件架构这个概念了。自九 十年代以来,部分由于在r a t i o n a ls o f t w a r e 和m i c r o s o f l 公司内部的相关活动, 软件架构这个概念开始越来越流行起来。 2 武汉理工大学硕士学位论文 卡内基梅隆大学和加州大学埃尔文分校在这个领域作了很多研究。卡内基 梅隆大学的m a r ys h a w 和d a v i dg a r l a n 于1 9 9 6 年所写的 s o f t w a r ea r c h i t e c t u r e p e r s p e c t i v e o i la n e m e r g i n g d i s c i p l i n e ) 提出了软件架构中的很多概念,例如软件 组件、连接器、风格等等。加州大学埃尔文分校的软件研究院所做的工作则主 要集中于架构风格、架构描述语言以及动态架构1 4 1 。 从学者们所关注的角度不同,逐渐出现了逻辑架构、物理架构、系统架构 等软件架构的分类。多层的软件架构逐渐成为主流,一个典型的软件系统都分 为表现层、业务层、数据层等多个层次,来满足不断发展的软件系统的业务需 求。随着现代企业对r r 基础设施的依赖增大,整个企业的业务可能都会基于 i n t e r n e t 或i n t r a n e t 进行运作,因此,出现了m i s 、e r p 、s c m 等应用系统,在 这些复杂的应用系统中,软件架构致关重要,它必须保证软件系统的后期扩展 性,来延长系统的生命周期,并与其它系统通过e a i 或其它方式进行集成。同 时还出现了“企业软件总线( e n t e r p r i s es o f t w a r eb u s ,e s b ) ”的架构,它试图通 过确立软件模块间的、独立于技术、统一的企业级通信标准,从根本上解决应 用程序的集成问题。与此同时,一些软件架构开始尝试使用c o r b a 等中间件解 决系统异质问题,这些都为后来软件架构的研究提供了很好的路线图【5 l 。 1 1 3 当前软件架构的局限 软件架构的研究经过了几十年的发展,仍然面临着很多问题,在面对统一 的软件架构这个问题时缺少答案。 在过去的软件系统中,由于设计不合理,接口不规范等问题,造成系统与 系统间甚至是子系统与子系统间的相互通讯困难,资源共享不顺畅,整合困难, 容易出现所谓的“信息孤岛”、“应用孤岛”。软件架构的设计中通常都缺乏灵活 性,产生了“m o n o l i t h i c ”设计,在设计与灵活的应用需求脱节嘲。但在上世纪 九十年代后期,这个问题逐渐被学者们所重视,一个好的软件架构应能提供灵 活的扩展机制、丰富的接口、共享应该共享的信息等,这是一个良好设计的软 件架构的规范,但是由于技术间差异性的普遍存在,大多数系统问即便有良好 定义的接口也难以得到其他系统的使用。 c o r b a 、d c o m 、e l b 等中间件的出现为统一接口层的出现提供了可能。 但抛开某些中间件的灵活性易用性不谈,这些异构的中问件之间的统一访问又 产生了新的问题,即中间件的异构性问题。又由于新旧系统混杂,异构系统, 3 武汉理工大学硕士学位论文 不同的平台、开发技术、开发商、多个版本并存等问题,使得软件系统很难被 重用,不可避免的需要被重写,这使得一个统一的软件架构被提上了日程。 1 2 面向服务架构的研究现状与发展 1 2 1 国外研究现状 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 ,面向服务的架构) 是一种新的软件架构, 它最早在1 9 9 6 年被提出,但碍于当时实现技术的不足,未能获得发展,后来由 于在分布式技术、程序设计方法学、业务计算能力等方面的进展,使s o a 作为 “现代应用开发领域最重要的课题”被提出n 许多研究机构、大学、软件企业 都将其作为研究重点。m m 、b e a 、微软等公司和机构都提出了实现s o a 的新 技术。尤其是一些机构联合提出以w e bs e r v i c ea r c h i t e c t u r e ( w s a ) 作为实现 s o a 的标准l s j l 9 j ,这使得s o a 在标准化之路上迈出了一大步,但还有很长的路 要走as o a 仍远没有达到成熟的地步,甚至还没有一个获得公认的定义,研究 工作大都处于理论研究阶段。 1 2 2 国内研究现状 在国内,s o a 还是一个新鲜的事物,虽然近两年来关于s o a 的报道经常见 诸各种媒体,但是炒作概念的成分居多,并没有多少实用成果。研究中,面向 服务( s o ) 、面向组件( c o ) 、面向对象( o o ) 的理论研究成果也并不多,关 于s o a 的著作更是少见。在实践领域,虽然有一些国内企业提出了s o a 的概 念性产品,但仍没有看到其s o a 系统的成熟应用的案例。由此可见,国内对s o a 的研究还处于起步阶段。 1 2 3s o a 的发展 s o a 作为一种刚刚兴起的技术,还不太成熟,也具有一定的不确定性,但 是这并不能阻碍s o a 技术的不断发展,已有大量的国际软件公司和标准化组织 对其投入了大量的资源进行研究。作为一种新型的软件开发架构,s o a 具有非 常大的优势,它放弃了极易带来技术差异性的“以技术为中心”的细粒度实体, 而转向“以业务为中心”的服务,这符合按需计算的发展潮流,尤其适用于大 规模的企业级应用开发。随着互联网络的迸一步发展,分布式应用的不断普及, 4 武汉理工大学硕士学位论文 s o a 的应用会更加的普遍并被人们所接受,成为一种最重要的软件架构。因此 可以预见,s o a 的发展会对软件设计思想产生很大的影响并对分布式企业应用 的不断普及起到重大的促进作用。 1 3 本文的研究意义 通过上文对s o a 研究的分析,可以认为s o a 对今后的软件架构设计方向 将产生很大的影响,对各种分布式计算技术的统一也带来很大的机遇。本文对 s o a 的关键技术及其应用实现进行研究,具有较强的理论意义。通过在基于s o a 的架构上实现分布式的协同系统,为类似需求的计算机系统的实现提供了一个 参考,也是对实现具有统一软件架构的分布式应用系统进行的探讨。 本论文具有以下研究意义: 1 ) 通过对s o a 这种新兴的软件架构进行研究,对现有技术进行继承和发 展,发现并弥补现有软件架构的不足,有利于消除在不同协议、不同软硬件的 平台问出现的系统整合问题,更好的解决软件重用性的问题。 2 ) 通过以计算机协同系统作为实现s o a 的切入点,用面向服务的概念封装 协作任务,让任务协作以服务的方式运作,使服务作为基本粒度,为任务的相 互协调提供更良好的耦合程度,从而提出一种新型的协同系统的基础框架,在 这个新框架下对异构系统进行统一,整合信息,消除信息孤岛,使协同工作能 够在实际系统中发挥更大的作用。 3 ) 由于现代企业级应用系统的开发越来越复杂,传统的c s 或b s 架构已 经无法满足其要求,因此s o a 的研究对企业级应用系统的开发有现实指导意义, 它能较好的整合现有技术与系统,达到灵活且快速改变业务规则的需求,是今 后大规模软件系统的一大发展方向,值得在企业级应用系统的开发中采用。 1 4 本文的研究目标和内容 s o a 是一个有着良好运用前景的软件体系结构。随着各种相关规范的日益 成熟,s o a 的优越性也越发突出。目前国内对s o a 的研究和应用还明显不足, 本文的研究目标是对s o a 及其各种相关技术的基本概念和原理进行研究,从而 对s o a 有一个全面的理解,为实际应用打下基础;然后,与协同系统结合,研 究实现s o a 的技术与方法,将s o a 架构应用到协同系统中。 5 武汉理工大学硕士学位论文 论文的主要研究内容是:首先深入研究面向服务架构的概念及原理;接着 研究如何在协同系统中使用面向服务的架构,协同系统的几个关键技术问题的 实现;最后,开发一个实际的基于s o a 架构的协同应用系统,并对其基本体系 结构、关键技术进行阐述。 6 武汉理工大学硕士学位论文 第2 章面向服务的架构( s o a ) 要构建s o a 的平台,必须明确什么是s o a ,本章首先列举了s o a 的定义, 探讨什么是s o a ,并对它的产生、发展、特点,与其它技术相比的优势等进行 了阐述。 2 1 定义 从总体上讲,s o a 是一种架构模型,它可以根据应用需求通过网络对松散 耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是s o a 的基础, 可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性l 堋。 s o a 的关键是“服务”的概念,国际组织w 3 c 对服务的理解是:“服务提 供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使 用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。 s e r v i c e a r c h i t e c t u r e t o m 将s o a 定义为;“本质上是服务的集合。服务间彼 此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进 行某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完 善、独立于其他服务所处环境和状态的函数。” l o o s e l y c o u p l e d c o i n 将s o a 定义为;“按需连接资源的系统。在s o a 中, 资源被作为可通过标准方式访问的独立服务,提供给网络中的其他成员。与传 统的系统结构相比,s o a 规定了资源间更为灵活的松散耦合关系。” 世界最大的r r 咨询和服务机构之一的m e t a 公司将s o a 定义为:“一种以 通用为目的、可扩展、具有联合协作性的架构,所有流程都被定义为服务,服 务通过基于类封装的服务接口委托给服务提供者,服务接口根据可扩展标识符、 格式和协议单独描述。” g a r t n e r 集团的研究员则将s o a 描述为:“客户端朋匣务器的软件设计方法, 一项应用由软件服务和软件服务使用者组成s o a 与大多数通用的客户端,服 务器模型的不同之处,在于它着重强调软件组件的松散耦合,并使用独立的标 准接口。” 我们可以从上述的定义中看到s o a 的几个关键特性:一种粗粒度、松耦合 服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口 7 武汉理工大学硕士学位论文 和通讯模型。它并不是一种现成的技术,而是一种架构和组织r r 基础结构及业 务功能的方法。s o a 是一种在计算环境中设计、开发、部署和管理离散逻辑单 元( 服务) 的模型1 1 l j 。 2 2 $ 0 a 的产生 s o a 的出现,是现代软件技术的一大飞跃,它为共享统一的架构提供了可 能,可以认为是在几十年来学者们的研究成果中,计算机技术在三个方面的发 展促成了“服务”概念的产生: 1 ) 程序设计 略过漫长的程序设计语言的发展史不谈,早期的程序设计曾经有一个重要 贡献:c o b o l 语言提供的“功能分解”和“功能分析”的概念,它适于对软件 的功能进行分解,产生很多小的程序片段,在它的基础上,出现了p a s c a l 语言, 明确的支持功能分解,使得p a s c a l 语言迄今仍然是科学领域非常流行的技术语 一 口o 由于易于被使用,功能编程概念开始流行起来,编程语言逐渐开始提供强 大的工具,允许构建可重用的代码块一“函数”,并允许将函数保存在软件库 中。c 语言是将整个程序以函数体来构造的语言。随着函数越来越复杂,软件模 块和组件应运而生。有多种形式的组件和模块出现,如a d a 语言、m o d u l a 2 的 模块以及v i s u a lb a s i c 中的v b x 组件。它们都将软件组件抽象成为一个容器, 容器中包含了数据以及在数据上执行操作的函数。 再发展,出现了具有“封装”概念的语言元素,如p r o l o g 和a d a ,它们 演化成了能为模块化编程提供成熟功能的编程平台。在面向组件还未得到很快 推广的时候,面向对象的概念诞生了,这就是第一个面向对象的编程语言 s i m u l a 。后来出现的s m a l l t a l k 和c 将面向对象的精髓推向了极至,并出现 了其他的新型的面向对象语言,如j a v a 和c 鼽对象类似于组件,它们支持封装, 支持数据和功能的绑定,具有封装、继承、多态三个重要特性。 但面向对象编程的一个共性问题是:抽象度和粒度太小,无法有效重用和 分布。而“面向服务”就是旨在消除分布式对象计算的很多问题,正确控制粒 度级别和远程服务的访问模式。 分布式计算技术 8 武汉理工大学硕士学位论文 在计算机网络诞生以后,便有了分布式的概念,最早是在s u nm i c r o s y s t e m s 和n o v e l l 等公司的操作系统中出现。如u n i x 中的n f s 文件系统,和n o v e l l n e t w a r el o a d a b l em o d u l e s 等。 随后,客户机和服务器的区别淡化。d c e 的分布式计算平台概念与新出现 的面向对象的开发范例相结合,产生了c o r b a 中间件。c o r b a 提供了公开大 量可远程访问的功能,这些功能被分解为可惟一识别的,可远程访问的、能自 我管理状态的对象。但c o r b a 的一些缺陷局限了它的发展,学者们尝试着突破 对象架构的局限性,提供更高的抽象级别的一组对象来汇总在单个服务器中, 于是有了r p c 、e j b 、d c o m 这样的应用程序远程技术,此外还涌现了很多分 布式计算中间件解决方案,以解决分布式事务管理、消息传输、e a i 、安全和其 它问题。 中间件技术为单个系统的开发提供了很好的架构,但却使异构的中间件难 以整合,为解决这个问题,2 0 世纪9 0 年代出现了x m l 语言,由于它的表达能 力强、使用灵活,得到了后来的各种技术的使用,出现了x m ld t d 和x m l s c h e m a 等标准,并在此基础上,出现了s o a p 协议,x m l w e bs e r v i c e ,为分布 式的应用产生了巨大的推动作用。 3 ) 业务计算 计算机的发展总与解决具体的业务问题相关。刚开始时,所有软件都是定 制的,用机器语言编写,后来改用功能语言。数据库的产生和发展,使计算机 的业务计算能力得到巨大提升。 随着现代软件系统的规模不断升级、业务逻辑不断复杂化,出现了e r p , c r m ,s c m 等各种系统,这些新型的企业软件系统带来很多好处的同时也让人 们看到了现有软件架构的不足之处,各种系统进行整合时,人们开始使用e a i 的方式。s o a 旨在协调当今众多应用程序、数据库和遗留系统的业务逻辑和数 据,提供一个可持续策略,使r r 系统能灵活的适应功能需求和业务策略的更改, 而不需要使用特定的中间件或e a i 平台。 2 3 面向服务的优势 从业务上讲,s o a 支持将业务作为链接服务或可重复业务任务进行集成, 可在需要时通过网络访问这些服务和任务。这个网络即可以包含在一个i n t r a n e t 9 武汉理工大学硕士学位论文 内部,也可以分散于i n t e m e t 各地且采用不同的技术,通过对来自不同地域的服 务进行组合,可让最终的调用方察觉不到异处。需要时,这些服务可以将自己 组装为按需应用程序一即相互连接的服务提供者和使用者集合,彼此结合以 完成特定业务任务,能够适应不断变化的情况和需求( 在有些情况下,甚至不 需要人工干预) 。换言之,s o a 带来了粗细度的应用整合,与以前面向对象( o b j e c t o r i e n t e d ) 1 1 4 】的思路相比,它们的区别如表2 1 : 表2 1o o 与s o 的对比 匿孑? “嚣舟对象“三篡二。? 警一了6 酒勰赧务焉耋薹戮 完全依赖于本地契约简化了服务间的假设依赖 边界难以区分边界清晰定义 共享类型,而不是模式共享模式,而不是类型 紧密耦合自治 基于平台的兼容基于策略的兼容 从技术角度而言,s o a 带来了“松散耦合”的应用程序组件,与其它“紧 耦合”连接的比较如表2 2 所示。在此类组件中,代码不一定绑定到某个特定的 数据库( 甚至不一定绑定到特定的基础设施) 。由于这种松散耦合特性,保持了 技术中立,使得能够将以各种编程技术和工具写成的服务组合为各种应用程序。 这样还大幅度提高了代码重用率,可以在增加功能的同时减少工作量。所有交 互都是基于某种“服务的契约”进行的;服务契约用于定义服务提供者和客户 机之间的交互,简化了软件系统进行分布式整合和部署的困难。 表2 2 紧耦合与松耦合 震鬈缀射零鬟雾瑟震篡了一馕耩会纛黧震荔黧冀瑟瑟。轻藕畿翟薹黧鬟耋翁 物理耦合需要直接的物理链接物理中介 通信方式同步异步 类型系统强类型系统( 如接口语义)弱类型系统( 如载荷语义) 交互模式以面向对象方式导航复杂以数据为中心,独立消息 对象树 过程逻辑的控制集中控制处理逻辑分布式逻辑组件 服务发现和绑定静态绑定服务动态绑定服务 平台依赖性对操作系统和编程语言的独立于操作系统的编程语言 依赖性高 s o a 要求在设计软件系统时将应用设计为服务的集合,需要跳出应用本身 1 0 武汉理工大学硕士学位论文 进行思考,考虑现有服务的重用,并思索这些服务如何能够被其他项目重用【1 5 】。 “单独的”、“独立的”、“封装完善的”服务所具有的一个关键的好处是,可以 采用多种不同方法将它们组合成较大型的服务,由此来实现重用。 2 4s o a 的架构 s o a 是设计的蓝图,软件以架构为基础,逐渐添加软件模块,向上层进行 设计,架构为基线,一旦确立就不能轻易的改动。这是架构在整个软件开发中 的重要地位。对s o a 架构本身而言,也具有自身的架构。 架构的架构,这在一些文献中被称为“元架构”,如u m l 中采用m o f 语义 对m 3 层进行描述的方式。图2 1 描述了s o a 架构中的一些重要元素以及它们 问的关系。 图2 1s o a 的架构 从图2 1 中可以看到,基于s o a 的应用系统包含服务、消息、策略、契约、 模式等一些重要元素。 1 1 武汉理工大学硕士学位论文 应用系统由服务组成,通过消息交换整合在一起。 服务分为有状态服务和无状态的服务,有状态服务通过维护若干状态, 实现消息会话。 服务的管理由策略完成,服务与服务间的策略是兼容的,这包含对安全 性的要求、对可用性的说明等等。 每一个服务由相应的服务契约来定义。服务契约指明了这个服务采用的 消息交换模式、消息的模式本身( s c h e m a ) 。 2 5s o a 的特点 虽然s o a 的定义与理解还没有得到学者们的统一,但从目前的研究成果来 看,一个基于s o a 的系统,应满足如下需求: 1 ) 可从外部访问 s o a 的系统中,大都采用基于消息交换的方式进行接口调用,这使得外部 用户在相应的权限约束下也能像系统内部的用户一样访问系统并获得相同的服 务。通过b 2 b 协议或w e b 服务的方式,外部用户可以与系统进行消息交换,并 享受系统服务。 2 1 随时可用 当有服务使用者请求服务时,s o a 要求必须有服务提供者能够响应。大多 数s o a 都能够为门户应用之类的同步应用和b 2 b 之类的异步应用提供服务。同 步应用对于其所使用的服务具有很强的依赖性。许多同步应用部署在前台,并 很容易受到用户请求数的影响,随着提供特定服务功能的服务器数量的增长, 出现短缺的可能性也呈指数级上升。 而采用队列请求式设计的异步应用则更为稳健,可以容许出现服务提供者 短缺或迟滞的情况。大部分情况下异步应用都能够稳健应对短时间短缺。 3 ) 粗粒度服务接口 粗粒度服务提供一项特定的业务功能,而细粒度服务代表了组件的操作方 法。采用粗粒度服务接口的优点在于使用者和服务层之间不必再进行多次的往 复,一次往复就足够。i n t e r a c t 环境中有保障的t c p i p 会话已不再占据主导、建 立连接的成本也过高,因此在该环境中进行应用开发时粗粒度服务接口的优点 更为明显。 武汉理工大学硕士学位论文 除去基本的往复效率,事务稳定性问题也很重要:在一个单独事务中包含 的多段细粒度请求可能使事务处理时间过长、导致后台服务超时,从而中止。 与此相反,从事务的角度来看,向后台服务请求大块数据可能是获取反馈的唯 一途径。 钔松散耦合 s o a 具有“松散耦合”组件服务,这一点区别于大多数其他的组件架构。 该方法旨在将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔 离开来。 服务提供者和服务使用者间松散耦合背后的关键点是服务接口作为与服务 实现分离的实体而存在。这是服务实现能够在完全不影响服务使用者的情况下 进行修改。松散耦合提供了更好的应用集成的手段,方便整合底层实现。 5 ) 可重用的服务及服务接口设计管理 s o a 有服务的可重用原则,这可以使s o a 的应用变得更加灵活。设计可重 用服务是与数据库设计或通用数据建模类似的最有价值的工作。由于服务设计 是成功的关键因素,因此应当以一种适当的方法进行服务设计过程管理。 服务设计管理根本上讲是服务设计问题,为了获得良好设计并可重用的服 务,应当超越项目短期目标进行服务接口的开发和评估,同时还需要为接口文 档、服务实现文档及所有重要的非功能性特征设立标准。或者在大型系统的设 计中,应建立通用服务库和开发流程,以保证重用的正确性和通用性。 回标准化的接口 得益于x m l 标准和w e b 服务的标准化,s o a 的实现是技术中立和开放性 的,采用标准的接口使得软件系统中部署的所有技术和应用接口统一了w e b 服 务使应用功能得以通过标准化接口( w s d l ) 提供,并可基于标准化传输方式 ( h t i v 和j m s ) 、采用标准化协议( s o a p ) 进行调用。例如,开发人员可以采 用最适于门户开发的工具轻松创建一个新的门户应用,并可以重用e r p 系统和 定制化j 2 e e 应用中的现有服务,而完全无须了解这些应用的内部工作原理。采 用x m l ,门户开发人员无须了解特定的数据表示格式,便能够在这些应用间轻 松地交换数据。 7 ) 支持各种消息模式 s o a 中可能存在以下消息模式。在一个s o a 实现中,常会出现混合采用不 同消息模式的服务。 1 3 武汉理工大学硕士学位论文 无状态的消息。使用者向提供者发送的每条消息都必须包含提供者处理 该消息所需的全部信息。这限定使服务提供者无须存储使用者的状态 信息,从而更易扩展。 有状态的消息。使用者与提供者共享使用者的特定环境信息,此信息包 含在提供者和使用者交换的消息中。这一限定使提供者与使用者问的通 信更加灵活,但由于服务提供者必须存储每个使用者的共享环境信息, 因此其整体可扩展性明显减弱。该限定增强了服务提供者和使用者的耦 合关系,提高了交换服务提供者的服务难度。 等幂消息。向软件代理发送多次重复消息的效果和发送单条消息相同。 这一限定使提供者和消费者能够在出现故障时简单的复制消息,从而改 进服务可靠性。 鳓精确定义的服务接i x l 服务是由提供者和使用者间的契约定义的。契约规定了服务使用方法及使 用者期望的最终结果。此外,还可以在其中规定服务质量。此处需要注意的关 键点是,服务契约必须进行精确定义。 前文中可以看到s o a 的其中一个定义:“一种以通用为目的、可扩展、具 有联合协作性的架构,所有流程都被定义为服务,服务通过基于类封装的服务 接口委托给服务提供者,服务接口根据可扩展标识符、格式和协议单独描述。” 该定义的最后部分表明在服务接口和其实现之问有明确的分界。 综合以上这些应用需求来看,本文认为具有以下四个大的特点的系统才能 称为是s o a 系统: 1 ) 边界清晰 服务与服务之间边界清晰、逻辑明确,这基于封装性的原则,这个特性指 明了服务的提供者与使用者之间靠服务接口关联,而与具体的实现无关,由此 实现松耦合接口。 服务自治 自治意味着系统支持的服务可以在允许的范围和程度内变。一个已发布的 系统,其各种服务的实现也是可能变更的,实现的编程语言可能变更、版本可 能变更、服务提供者位置也可能变更,但它所提供的服务内容不变,因此依赖 这个服务的其它服务才不会受到影响。 3 ) 共享架构 1 4 武汉理工大学硕士学位论文 在调用服务时,使用者不需要知道服务的内部数据,只需要知道接口的参 数、返回类型等信息即可交换消息,这就是架构的共享。通过共享架构而不是 内部信息,使服务封装更进了一步。 策略兼容 服务间需通过某种语义交互,这些语义即是定义好的策略,如安全性、可 用性等的定义。服务策略通常在服务提供者一方指定,服务使用者直接引用相 应策略就能正常访问。 2 6 服务与组件的统一 软件架构的一个重要特性是将整个软件系统结构划分为更小的、可管理的 组件,这样每一个组件都可以单独处理。这个技术是软件工程的许多方法的核 心。这些组件具有已知的、良好定义的接口,可以被其它软件和组件所使用。 从而解决困扰计算机软件业界多年的软件复用难题,从而提高生产力,降低生 产成本。 组件技术的目的是在保证组件自身质量( 包括功能、性能、安全性和健壮性 等) 的前提下,实现组件的简单复用和组合。而s o a 的根本目的在于实现业务单 元( 即服务) 的封装、互操作和简单复用,同时使系统整体具备快速适应业务发展 变化的能力。 s o a 在思想上与面向组件技术是相通的,如:两者均强调复用,来降低软 件系统实施成本;遵循软件设计“高内聚低耦合”的思想:实现技术和设计方 法没有约束,如面向对象和结构化编程都不影响其作为服务或组件的“身份”。 因此,从应用开发层次看,组件技术是s o a “服务”的组装和实现,而s o a 则可以看作是在应用表现层次的软件“组件化”。它们在思想上是统一的。 2 。7 技术独立性 1 ) 拓扑逻辑的独立性 一些架构基于对特定的网络拓扑的支持,在硬件和软件结构上都有所要求, 如客户机和服务器必须星形连接,或某个组件必须依赖于软件总线的存在,而 在s o a 中,淡化服务器与客户机的观念,服务可以由在网络上可连通的任何一 台计算机和任何一个组件提供,独立于拓扑连接的结构。 1 5 武汉理工大学硕士学位论文 一个典型的s o a 结构如图2 2 所示,如同o s i 七层模型一样,它只定义了 基本的层次结构,在互连互通的任意两台计算机上一都可以进行消息交换。 e 三三三三三三三三 三三三三三j 三三i ;i i ;i 蟊应用系统基础结构 图2 2 一个s o a 系统的体系结构 基础框架 传输协议 实现技术的独立性 s o a 也是一种技术独立的解决方案。通过基于消息交换的通信机制,不管 采用哪种编程语言、运行平台、操作系统都能被集成在s o a 的框架之中。x m l 定义了基本的数据格式,s o a p 规定了标准的访问协议,由w s d l 定义标准接 口,这使得基于w e b s e r v i c e 的s o a 得到广泛使用的基础。而x m l 和s o a p 缺 少对更具体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃定西市陇西县招聘城镇公益性岗位人员28人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025广东云浮市郁南县林业局招聘生态管护人员2人考前自测高频考点模拟试题及答案详解(新)
- 2025年湖南长沙市一中青竹湖湘一教育集团公开招聘教师50人模拟试卷及答案详解(全优)
- 2025年高硅氧玻璃纤维布合作协议书
- 安全培训教室必要性课件
- 小学安全员培训材料课件
- 2025贵州金丽农业旅游产业发展集团有限公司招聘经理层高级管理人员(财务总监)1人模拟试卷及参考答案详解
- 2025年可穿戴运动手环项目发展计划
- 2025年应急管理部所属单位第二批次公开招聘(秦皇岛有岗)考前自测高频考点模拟试题及一套答案详解
- 个人股份转让合同协议书8篇
- 工厂品质协议书范本
- 邮政社招笔试试题及答案
- 出科考核规范
- 肩周炎的影像诊断
- 无伞空投技术研究进展及国外准备阶段分析
- 销售团队激励方案
- 日结工资合同(2025年版)
- 2025年配电专业运检题库
- 新增年产3.5万吨油液产品(润滑油、特种油、金属加工液、防冻液)项目环评资料环境影响
- 2025会计合同范本
- 《妊娠高血压的护理》课件
评论
0/150
提交评论