第7章面向服务体现结构SOA概述主讲:高岩gaoyan_neu@126.com东北大学信息学院计算机应用技术研究所2/59内容提要h7.1SOA概述h7.2SOA关键技术3/597.1SOA概述hSOA,ServiceOrientedArchitectureh中文常译为k面向服务的体系结构k以服务为中心的体系结构k面向服务的架构SOA4/597.1SOA概述h对SOA的定义和理解分两类k一类认为:SOA主要是一种架构风格k另一类认为:SOA是包含运行环境、编程模型、架构风格和相关方法论等在内的一整套新的分布式软件系统构造方法和环境,涵盖服务的整个生命周期:建模——开发——整合——部署——运行——管理5/597.1SOA概述hSOA定义kService-architecture.com将SOA定义为:本质上是服务的集合。服务间彼此通信,这种通信可能是简单的数据传送,也可能是两个或更多的服务协调进行某些活动。服务间需要某些方法进行连接。所谓服务就是精确定义、封装完善、独立于其他服务所处环境和状态的函数kLooselycoupled.com将SOA定义为:按需连接资源的系统。在SOA中,资源被作为可通过标准方式访问的独立服务,提供给网络中的其他成员。与传统的系统结构相比,SOA规定了资源间更为灵活的松散耦合关系6/597.1SOA概述hSOA定义kGartner则将SOA描述为:“客户端/服务器的软件设计方法,一项应用由软件服务和软件服务使用者组成……SOA与大多数通用的客户端/服务器模型的不同之处,在于它着重强调软件组件的松散耦合,并使用独立的标准接口k虽然不同厂商或个人对SOA有着不同的理解,但是我们仍然可以从上述的定义中看到SOA的几个关键特性:一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型7/597.1SOA概述h需着重注意的是,SOA并不是新生事物——大型IT组织成功构建和部署SOA应用已有多年的历史——这要比现有的XML和Web服务长很多8/597.1SOA概述h软件体系结构的发展k软件体系结构是一种系统结构,该结构包括软件元素、元素的外部可视属性、元素之间的关系9/59••传统方式:企传统方式:企业以应用为中心构建业以应用为中心构建ITIT系统,如系统,如人事管理系统、库存管理系统、人事管理系统、库存管理系统、ERPERP系统等。系统等。背景背景————信息孤岛信息孤岛••一个业务请求很难调用多个业务系统。一个业务请求很难调用多个业务系统。系统开发时期不同,系统开发时期不同,采用的开发工具不同采用的开发工具不同……信息孤岛!信息孤岛!7.1SOA概述10/59““我们所面临的系统集成挑战可能是世界上最我们所面临的系统集成挑战可能是世界上最复杂的复杂的!!””————通用汽车公司通用汽车公司CTOTonyScottCTOTonyScott典型案例典型案例••全球有全球有8080多家工厂;多家工厂;••每一家工厂都有多种企业应用系统;每一家工厂都有多种企业应用系统;••仅仅将每家工厂中的某一类应用相连接,就仅仅将每家工厂中的某一类应用相连接,就要与数十种要与数十种APIAPI打交道。打交道。““要维护好这些各不相干的界面是非常费时、要维护好这些各不相干的界面是非常费时、费力的,且成本高昂费力的,且成本高昂””7.1SOA概述11/59传统解决方案传统解决方案点到点集成点到点集成传统传统EAIEAI集成集成7.1SOA概述““刚性刚性””EAIEAI——死神之吻!死神之吻!12/59SOASOA解决方案解决方案““柔性柔性””拯救拯救EAIEAI的的““天使天使””!!7.1SOA概述13/597.1SOA概述hh电子商务应用实施中电子商务应用实施中kk经常会增加新的电子商务应用,这常常会每几个经常会增加新的电子商务应用,这常常会每几个星期或每几个月发生一次;星期或每几个月发生一次;kk经常会对电子商务的流程进行更改,这常常每周经常会对电子商务的流程进行更改,这常常每周或每几天发生一次;或每几天发生一次;kk经常应用户的需求而进行更改,这甚至每个小时经常应用户的需求而进行更改,这甚至每个小时都会发生,尤其是当需要为每个客户、每个合作都会发生,尤其是当需要为每个客户、每个合作伙伴或每个企业员工都定制其首选的电子商务应伙伴或每个企业员工都定制其首选的电子商务应用的时候用的时候背景背景————业务变化业务变化14/597.1SOA概述hh应用的复杂连接应用的复杂连接kk对于每个应用,程序员都为每个需要的企业资源对于每个应用,程序员都为每个需要的企业资源或外部资源编写连接代码,以使得应用得以运行或外部资源编写连接代码,以使得应用得以运行kk程序员还需要编写更多的代码以使得大量的用户程序员还需要编写更多的代码以使得大量的用户能够访问每个应用能够访问每个应用kk应用与应用之间的集成同样需要编写大量的代码应用与应用之间的集成同样需要编写大量的代码不恰当的解决方案不恰当的解决方案15/597.1SOA概述hh应用的复杂连接应用的复杂连接kk第一个应用,企业的为之付出的总的费用应该是第一个应用,企业的为之付出的总的费用应该是该应用的开发和部署费用、以及运营时态的维护该应用的开发和部署费用、以及运营时态的维护和更新费用和更新费用kk第二个应用,应用的开发和部署费用是一样的,第二个应用,应用的开发和部署费用是一样的,但是企业需要为之花费额外的集成费用,同时由但是企业需要为之花费额外的集成费用,同时由于整个企业应用环境变得更加复杂,其运营时态于整个企业应用环境变得更加复杂,其运营时态的维护和更新费用可能呈指数形式增加的维护和更新费用可能呈指数形式增加kk同样,当第三个、第四个应用被部署后,企业所同样,当第三个、第四个应用被部署后,企业所支出的费用可能是高得惊人支出的费用可能是高得惊人不恰当的解决方案不恰当的解决方案16/597.1SOA概述hh由程序员主导的由里向外的开发模式应当被由程序员主导的由里向外的开发模式应当被由用户主导的由外向里的开发模式取代由用户主导的由外向里的开发模式取代hh冗长的串行的开发循环应当被即时的,快速冗长的串行的开发循环应当被即时的,快速的应用装配所取代的应用装配所取代hh应用应当天生就具备高可定制性应用应当天生就具备高可定制性hh商业技术概念:商业技术概念:““即时制造即时制造””以及以及““规模可伸规模可伸缩缩””SOASOA解决方案解决方案17/597.1SOA概述hh各种服务分别实现了一定的功能各种服务分别实现了一定的功能hh将各种电子商务的服务进行组合和集成以创将各种电子商务的服务进行组合和集成以创建动态电子商务应用建动态电子商务应用hh充分地跨越所有系统平台充分地跨越所有系统平台hh通过在企业间进行服务的集成,实现业务的通过在企业间进行服务的集成,实现业务的随需应变随需应变SOASOA解决方案解决方案18/597.1SOA概述hhSOASOA使业务更具有灵活性和重用性使业务更具有灵活性和重用性传统业务流程当今业务流程19/597.1SOA概述hSOASOA使业务更具有灵活性和重用性使业务更具有灵活性和重用性FlexibilityPoint-to-PointconnectionbetweenapplicationsSimple,basicconnectivityMessagingBackboneEAIconnectsapplicationsviaacentralizedhubEasiertomanagelargernumberofconnectionsEnterpriseApplicationIntegration(EAI)IntegrationandchoreographyofservicesthroughanEnterpriseServiceBusFlexibleconnectionswithwelldefined,standards-basedinterfacesServiceOrientatedIntegration20/59GartnerGartner关于关于SOASOA的预言的预言““到到20082008年,年,SOASOA将成为占有绝对优势的软将成为占有绝对优势的软件工程实践方法,它将结束传统的整体软件件工程实践方法,它将结束传统的整体软件体系架构长达体系架构长达4040年的统治地位(可能性:年的统治地位(可能性:70%70%)。)。””————GartnerGartner,,19961996年年7.1SOA概述21/59SOASOA本质本质••SOASOA是一个组件模型,它将应用程序的不同功是一个组件模型,它将应用程序的不同功能单元通过定义良好的接口和契约联系起来。能单元通过定义良好的接口和契约联系起来。••这些应用程序的不同功能单元被称为这些应用程序的不同功能单元被称为服务服务。。••接口采用中立的方式进行定义的,独立于实现接口采用中立的方式进行定义的,独立于实现服务的硬件平台、操作系统和编程语言。服务的硬件平台、操作系统和编程语言。••系统中的服务可以以统一、通用的方式交互。系统中的服务可以以统一、通用的方式交互。————IBMIBM7.1SOA概述22/59SOASOA的目标的目标••重用与合成:在应用之间重用模块;重用与合成:在应用之间重用模块;••松散耦合:服务的实现与使用分离;松散耦合:服务的实现与使用分离;••灵活性:应用可以被加入到新的模块;灵活性:应用可以被加入到新的模块;••开放性和互操作性:不同平台和环境下开放性和互操作性:不同平台和环境下的共享;的共享;••分布式:远程访问,集中管理。分布式:远程访问,集中管理。7.1SOA概述23/597.1SOA概述h松散耦合——W3C对耦合及松耦合的定义k耦合:是互相交互的系统彼此间的依赖。这种依赖又分为:i真依赖:系统从其他系统消费的要素或服务的集合。真依赖总是存在,无法简化i假依赖:系统为获得其他系统提供的要素或服务而不得不服从的因素。典型的假依赖包括语言依赖、平台依赖、API依赖等。假依赖总是存在,但可减少或降低其代价k松耦合:理想状态的松耦合体现在系统间仅存在真依赖关系。真实情况下,松耦合是一个相对概念,体现在某系统的假依赖已经最小化24/597.1SOA概述hSOA的松耦合k消除语言、平台、厂商依赖i传统的分布式构件系统(如CORBA、EJB等)在交互上往往是语言、平台和厂商相关的i而对服务的调用并不需要这些依赖关系,服务是通过服务描述剥离这种假依赖关系的服务服务服务消费者服务消费者服务描述包括服务消费者为实现和服务的交互所需要的所有信息,如服务的接口定义、服务的使用策略、服务级别约定等服务描述包括服务消费者为实现和服务的交互所需要的所有信息,如服务的接口定义、服务的使用策略、服务级别约定等25/597.1SOA概述hSOA的松耦合k消除时间依赖i对基于远程过程调用的分布式系统,客户端需要同步等待请求的返回i在SOA中,可以结合事件驱动的原理通过单向消息实现客户端和服务的异步交互,从而消除时间依赖26/597.1SOA概述hSOA的松耦合k消除访问地址依赖i一般情况下,服务描述需要包括服务的访问地址,这样服务消费者才能访问服务i在SOA中,可以通过间接寻址的策略消除访问地址依赖27/597.1SOA概述hSOA的松耦合k消除访问协议依赖i为把消息发送给服务,服务描述一般需要定义服务的消息传送协议i普遍存在的服务具有访问多样性,可通过标准的HTTP、FTP等进行访问。在底层SOA基础设施的帮助下,客户端不必关系服务的访问协议即可实现与服务的交互28/597.1SOA概述hSOA的松耦合29/59SOASOA与与OOP(1)OOP(1)AsynchronousAsynchronousmessagepassingmessagepassingVS.VS.SynchronousSynchronousmethodmethodinvocationinvocat